gpt4 book ai didi

java - 获取jar内包路径

转载 作者:行者123 更新时间:2023-12-02 07:09:15 25 4
gpt4 key购买 nike

在我的 java 程序中,我有一个名为 resources 的包,在那里我保留了一个 log.ascii 文件,在其中保存一些详细信息。为此,我使用该方法

.class.getResource("/resources") 当我在 Eclipse 上测试它时一切正常,但是当我构建 jar 时它找不到路径。你知道如何克服这个问题吗问题?感谢您的宝贵时间

    private static String retrieveSelectedWorkspace() throws FileNotFoundException{

String temp[];
String str=Gui.class.getResource("/resources").toString();

temp=str.split("/",2);

FileReader fr = null;
fr = new FileReader(temp[1]+"/log.ascii");

Scanner scanner = new Scanner(fr);

while(scanner.hasNextLine())
return scanner.nextLine().toString();

return null;
}
}

最佳答案

我认为你的代码可以使用 Class.getResourceAsStream()相反(/resources/log.ascii 需要打包在 jar 中,或者类路径上的其他位置)。

private static String retrieveSelectedWorkspace() throws FileNotFoundException {
InputStream in = Gui.class.getResourceAsStream("/resources/log.ascii");
Scanner scanner = new Scanner(in);
while(scanner.hasNextLine())
return scanner.nextLine().toString();
return null;
}

但是对于您的实际问题,您绝对可以从 jar 中获取文件夹资源,只要该文件夹打包在 jar 内即可。

测试.java:

class Test {
public static void main(String[] args) {
System.out.println(Test.class.getResource("/text.txt"));
System.out.println(Test.class.getResource("/folder"));
}
}

命令行。创建一个文件和一个文件夹。然后尝试从 .class 文件运行代码并从 .jar 文件运行代码。

C:\Temp>echo text > text.txt

C:\Temp>md folder

C:\Temp>javac Test.java

C:\Temp>java Test
file:/C:/Temp/text.txt
file:/C:/Temp/folder

创建 jar :

C:\Temp>jar cvf test.jar Test.class text.txt folder
added manifest
adding: Test.class(in = 530) (out= 347)(deflated 34%)
adding: text.txt(in = 7) (out= 9)(deflated -28%)
adding: folder/(in = 0) (out= 0)(stored 0%)

从 jar 运行:

C:\Temp>java -classpath test.jar Test
jar:file:/C:/Temp/test.jar!/text.txt
jar:file:/C:/Temp/test.jar!/folder

关于java - 获取jar内包路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15734866/

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