我正在开发一个Java Swing应用程序,我有一个文件(例如key.text),其中包含用于解密的密钥,解密是使用第三方库执行的,而我所做的解密工作就是将key.txt传递给库方法。
Eclipse工作区结构
src
com.org.controller
com.org.beans
key.txt
我尝试以以下方式传递bin路径,
String keyFilePath = "bin/key.txt";
aesEncrypt.setSecretKey(keyFilePath); // passing path to library method
当我在Eclipse中运行时,代码片段运行正常,但是将其包装在罐子中时却无法正常工作。
我尝试以以下方式使用
getResource()
,但这也无法正常工作。URL url = this.getClass().getResource("/key.txt");
File file = new File(url.toURI());
String keyFilePath = file.getAbsolutePath();
aesEncrypt.setSecretKey(new File(keyFilePath).getAbsolutePath()); // passing path to library method
所以我的问题是,如何传递驻留在已建jar中的资源路径?
最佳答案
由于您正在调用的API似乎需要一个文件名,因此您需要将资源(是zip条目而不是实际文件)复制到实际文件中:
Path file = Files.createTempFile(null, ".txt");
try (InputStream stream = this.getClass().getResourceAsStream("/key.txt")) {
Files.copy(stream, file, StandardCopyOption.REPLACE_EXISTING);
}
aesEncrypt.setSecretKey(file.toString());
关于java - 文件路径在JAR文件中不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40997463/