当前位置: 首页 > 面试题库 >

Java:导出到JAR后,路径名不起作用

谢诚
2023-03-14
问题内容

我已将项目导出到Eclipse中的可运行JAR。我的代码中有几个地方完成了以下操作。

String file = "src/Files/...";
loadFile(file); // purely for example

现在,该项目为JAR形式,这些目录似乎不存在,并且加载这些文件失败。我很确定我要引用的文件都打包在JAR中。在导出到JAR时,目录是否以任何特定方式更改?关于如何进行这项工作还有其他想法吗?


问题答案:

您需要将它们视为类路径资源,而不是本地磁盘文件系统路径。当您将文件打包到JAR中并且您也不想依赖于工作目录时,这将行不通。JAR中的文件已经是类路径的一部分。

假设您foo.txt在package中有一个文件com.example,则可以InputStream按以下方式获取其中一个文件

InputStream input = getClass().getResourceAsStream("/com/example/foo.txt");
// ...

或者当您处于static上下文中

InputStream input = SomeClass.class.getResourceAsStream("/com/example/foo.txt");
// ...

或者当您想扫描全局类路径时

InputStream input = Thread.currentThread().getContextClassLoader().getResourceAsStream("/com/example/foo.txt");
// ...


 类似资料:
  • 我试图合并2个简单的程序。我想制作成一个。jar文件,这是我编写的代码:(Project1.jar和Project2.exe都打包到这个。jar中) 当我在eclipse中运行项目时,一切都很好(两个文件都像我想要的那样被执行)。但是当我将这个项目导出到。jar并运行它时,什么也没有发生。我认为它与文件路径有关,因为它在Eclipse中运行时工作得很好。怎么解决这个?

  • 我有一个我写的程序的输出文件。它由FileWriter和BufferedWriter编写。 我是否错误地使用了FileWriter/BufferedWriter,或者它在.jar文件中不起作用?

  • 问题出在哪里?我怎么修好它? 下面是Controller类函数的代码:

  • 一个Java代码如下: 如果我从扩展类路径中删除hello.jar,并将其复制到也包含rt.jar的引导类路径(usr/lib/jvm/java-8-openjdk-amd64/jre/lib/),那么我的程序就无法工作。 据我所知,引导程序或扩展类加载程序中的所有jar文件都可以在程序中使用。如果这个异常是正确的,为什么Java会抛出这个异常?如果我不正确,请指导我。

  • 问题内容: 我已经设置了一个自签名证书来测试ssl java连接-但是,它拒绝查找java trustStore。除了将类编译到的文件夹(使用netbeans)(以及使用netbeans)之外,我还将其副本保存在/ Java / jre6 / lib / security中,以及上述都不起作用,因为当我运行以下命令时-trustStore = null。 如何正确设置路径? * UPDATE **

  • 我在下面的帖子中提到了这个问题和我的答案:来自Apache FOP 1.1和Java的PDF图像。我试图在每页上显示背景图像(有点像水印): 我让它在我的机器上从Eclipse和导出的jar中工作,如上面提到的帖子所述,但它不适用于我以外的机器。它总是说不支持该格式。 我正在使用 FOP 网站上的 FOP 1.1 罐子,并将它们全部添加到我的锁片中。也将它们与罐子一起导出。我没有解决方案的想法了。