【发布时间】:2012-12-05 23:43:43
【问题描述】:
我遇到了一个带有可执行 jar 的文件夹问题。
其实我是想打电话的
URL keystoreURL = ServerGUI.class.getResource("/resources/keystore");
String keystorePath = keystoreURL.getPath();
System.setProperty("javax.net.ssl.keyStore",keystorePath);
加载密钥库。 因为 setProperty 想要一个字符串来访问文件。
我的资源文件夹位于 Eclipse 的 /src 文件夹中。 在 Eclipse 中工作时一切正常,但如果我想创建一个可执行的 jar 文件,即使资源文件夹也存在,路径也不正确。
edit:打印路径时的另一件有趣的事情: 在 Eclipse 中:file:/C:/Users/Xenom/workspace/eBankingRMI/bin/resources/truststore
在 jar 中:jar:file:/C:/Users/Xenom/Desktop/ClientBanking.jar!/resources/truststore
那么显然 setProperty 无法读取第二个...
【问题讨论】:
-
我怀疑 API 正在寻找
File而不是URL参考 -
事实上最好的方法是提供一个像 /resources/keystore 这样的相对路径,但是如果我直接在 setProperty 中写这个,我会得到一个 java.io.FileNotFoundException: \resources\keystore (系统找不到指定的路径)..
-
解压创建的jar,查看内部文件夹结构
-
结构没问题,只是字符串路径不正确,你可以在我的编辑中看到。
-
我怀疑尝试加载密钥库的 API 正在尝试通过
File引用来执行此操作,而new File("jar:file:/C:/Users/Xenom/Desktop/ClientBanking.jar!/resources/truststore")不是有效文件。另外,您的原始帖子说/resources/keystore,但您的更新说/resources/truststore