You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

类UNIX系统中java -jar命令重定向输入失效问题求助

解决Java JAR文件重定向输入被忽略的问题

嘿,我之前也碰到过类似的麻烦,咱们一步步来排查和解决这个问题:

1. 确认程序是否正确读取标准输入(stdin)

重定向符号 < 的作用是把文件内容传入程序的标准输入流,如果你的Java程序根本没从System.in读取输入,那这个重定向自然会被忽略。

检查你的代码逻辑:

  • 是不是用了Scanner scanner = new Scanner(System.in);来读取输入?
  • 或者用BufferedReader br = new BufferedReader(new InputStreamReader(System.in));?
    如果你的程序是从命令行参数(args数组)读取输入,那重定向肯定无效——得改成读取标准输入才行。

举个简单的正确读取stdin的示例代码:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNextLine()) {
            String line = scanner.nextLine();
            System.out.println("读取到内容:" + line);
        }
        scanner.close();
    }
}

2. 检查输入文件的路径与权限

  • 先确认inputfile.txt在当前命令行的工作目录下:可以用ls(Linux/macOS)或dir(Windows)查看当前目录的文件列表。
  • 如果文件不在当前目录,要写完整的相对路径或绝对路径,比如./data/inputfile.txt或者C:\users\yourname\inputfile.txt。
  • 另外,确保你有读取这个文件的权限,比如Linux下用chmod +r inputfile.txt赋予读权限。

可以先测试文件本身是否可读:用cat inputfile.txt(Linux/macOS)或type inputfile.txt(Windows)命令,如果能正常输出文件内容,说明文件没问题。

3. 尝试用管道替代重定向

如果是shell环境对重定向符号处理有问题,可以试试用管道的方式传递输入:

  • Linux/macOS:cat inputfile.txt | java -jar mysolution.jar
  • Windows:type inputfile.txt | java -jar mysolution.jar
    这种方式和重定向的效果是一样的,但有时候能避开某些shell的兼容性问题。

4. 检查JAR包的主类配置

确保你的JAR包的MANIFEST.MF文件里,Main-Class属性指定的是正确的主类——也就是包含读取输入逻辑的那个类。如果主类配错了,运行的可能是另一个不处理输入的类,自然会忽略重定向的内容。

内容的提问来源于stack exchange,提问作者Zinzilla

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:08:24