【问题标题】:Why java scanner doesn't work when calling jar from cmd?为什么从cmd调用jar时java扫描仪不起作用?
【发布时间】:2015-02-05 20:10:08
【问题描述】:

我试图从我的 myFile.txt 文件中读取一些数据。我使用的代码如下:

try (Scanner scanner = new Scanner(new File("myFile.txt"))) {
        System.out.println("Start");

        while (scanner.hasNextLine()) {
            System.out.println("Inside");

            String line = scanner.nextLine();

            String[] attribute = line.split(",");

            String id = attribute[0];
            String firstName = attribute[1];
            String lastName = attribute[2];

            System.out.println(id + " " + firstName+ " " + lastName);
        }
        System.out.println("The end");
    }

当我从我的 IDE 运行此代码时,它运行良好。但是当我从 cmd 窗口运行 jar 文件时,它不起作用。只显示“开始”和“结束” 在 cmd 屏幕上。因此,scanner.hasNextLine() 始终为 false。

【问题讨论】:

  • 从 jar 中运行时,文本文件在哪里?
  • 与我的项目 jar 文件位于同一目的地。
  • 它是否在您启动程序的目录中?即,如果您在 Windows 上键入 ls(或 dir),您会看到列出的这个文件吗?
  • 我认为他的文件在正确的位置,因为没有“FileNotFoundException”。
  • try 之前尝试System.err.println(new File("myFile.txt").getAbsolutePath());

标签: java file-io jar cmd java.util.scanner


【解决方案1】:

File javadoc,一个文件是:

文件和目录路径名的抽象表示。

它不具体表示现有文件,仅表示路径名。

这里的问题是您尝试打开的文件不是exists。如果您的文件被打包在 JAR 中,您可以尝试通过 ClassLoader getRessource 方法访问它:

getClass().getClassLoader().getResource("myFile.txt");

【讨论】:

  • 不,我的文件没有打包在 JAR 中。请参阅我的最后评论。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-03
相关资源
最近更新 更多