gpt4 book ai didi

Java - 类路径问题

转载 作者:行者123 更新时间:2023-12-04 21:06:05 25 4
gpt4 key购买 nike

我有一个 products.jar 文件。里面有一个类 com.ClassA。项目的结构是这样的

products
|--test
|--com
|--ClassA.java
|--dependencies
|---inputs.txt

在 eclipse 中,ClassA.java 正在通过以下路径访问 inputs.txt 文件并且工作正常

private static final String PROPERTIES_FILE_PATH = "test/dependencies/inputs.txt";

test 包在 java build path -> sources

但是当我将此项目导出为products.jar 时,我发现在jar 文件中没有test 目录。在 jar 文件的根目录下有两个目录 comdependencies。因此,当我尝试通过命令行执行 ClassA(驻留在 jar 文件中)时,出现以下异常:

JUnit version 4.8.2
java.io.FileNotFoundException: test/dependencies/inputs.txt (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:137)
at java.io.FileInputStream.<init>(FileInputStream.java:96)

因此,在发现 test 目录未导出到 jar 文件后,我将 ClassA.java 中文件的路径更改为 dependencies/inputs.txt。它在 eclipse 中不起作用,但我认为它可以在 jar 中工作,因为 jar 文件位于类路径中,并且 dependencies 文件夹位于 jar 文件的根目录中,因此 java 启动器将能够找到dependencies 文件夹,然后是 inputs.txt 文件。

但不幸的是它也不起作用。

最佳答案

您不能使用 FileInputStream 读取 JAR 中打包的文件 - 它不再是文件。 FileInputStream 仅适用于实际的磁盘文件。

您需要使用 Class.getResourceAsStream ( javadoc ) 读取资源,例如

InputStream stream = getClass().getResourceAsStream("/dependencies/inputs.txt");

您省略了 test 前缀,因为它不在 JAR 文件结构中。

关于Java - 类路径问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8769392/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com