【问题标题】:java file relative path in eclipseeclipse中的java文件相对路径
【发布时间】:2012-06-19 21:11:28
【问题描述】:

三天我试图弄清楚如何使用相对文件路径读取文件。在 Eclipse 中,它可以编译并且效果很好,但是当我导出 app.它说它找不到文件。这是我正在处理的屏幕截图和代码。

此代码有效,但仅在 eclipse 中,它可以编译并完美地完成工作。但是当我将它导出为可运行的 jar 文件时,我得到一个错误,它无法找到 licenca.txt

 BufferedReader in = new BufferedReader(new FileReader(new File("licenca.txt").getPath()));
        String str;
        while ((str = in.readLine()) != null) {
      taLicenca.append(str + "\n");
      
    }

这是我的项目文件的截图

我已经尝试使用扫描仪功能,结果还是一样,它在eclipse中工作,但在导出时不起作用。这是错误消息:

【问题讨论】:

  • 相对路径取决于应用程序工作目录。此外,我想您不能简单地访问 jar 中的文件。如果在 jar 中,请考虑使用 class.getResource 方法。如果您的文件与 jar 位于同一文件夹中 - 您可以使用 jar 的路径(请参阅link)。您还可以在注册表中存储许可证的完整路径,但这取决于您的环境。

标签: java file path io bufferedreader


【解决方案1】:

我敢打赌,如果您将该文件放入类路径中,它就会起作用。

像这样改变你的代码:

InputStream is = this.getClass().getClassLoader().getResourceAsStream("licenca.txt");
BufferedReader in = new BufferedReader(new InputStreamReader(is));
String str;
while ((str = in.readLine()) != null) {
    taLicenca.append(str + "\n");
}

试试看吧。

【讨论】:

  • +1 是的,它会起作用,但我认为他必须明白发生了什么:)
  • 他已经在使用 Eclipse 来掩盖他对 CLASSPATH 知识的缺乏。我想那艘船已经航行了。
  • 不,它不起作用:P 当我添加 InputStream is = this.getClass().getClassLoader().getResourceAsStream("licenca.txt"); 时,它要求我将其转换为 InputStream 类型,当我这样做时,在线程“main”`java.lang 中的编译异常上显示此错误.Error:未解决的编译问题:类型不匹配:无法从 java.io.InputStream 转换为 org.omg.CORBA.portable.InputStream`
  • 我不考虑,如果他可以理解,他不会问这个问题,只是手动复制资源到启动文件夹或从jar中获取,如你所述。
【解决方案2】:

这是因为您的文件被导出作为jar 文件的一部分,因此,要创建jar 文件,请尝试使用ant 或maven 或其他东西,或手动复制你的文件在你的jar目录中,它调用start directory。

【讨论】:

    猜你喜欢
    • 2013-09-06
    • 2012-01-28
    • 2013-10-29
    • 2018-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-30
    • 1970-01-01
    相关资源
    最近更新 更多