我正试图找到资源的路径,但我没有运气.
这有效(在IDE和JAR中)但这样我无法获得文件的路径,只有文件内容:
ClassLoader classLoader = getClass().getClassLoader();
PrintInputStream(classLoader.getResourceAsStream("config/netclient.p"));
Run Code Online (Sandbox Code Playgroud)
如果我这样做:
ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource("config/netclient.p").getFile());
Run Code Online (Sandbox Code Playgroud)
结果是:
java.io.FileNotFoundException: file:/path/to/jarfile/bot.jar!/config/netclient.p (No such file or directory)
有没有办法获得资源文件的路径?
我已经设置了一个自签名证书来测试ssl java连接 - 但是,它拒绝找到java trustStore.我已经在/ Java/jre6/lib/security中保存了它的副本,除了编译类的文件夹(使用netbeans)以及/ java/jre6/bin之外,上述任何一个都不起作用,因为当我运行以下 - trustStore = null.
public class ShowTrustStore {
public static void main(String[] args) {
System.setProperty("javax.net.ssl.keyStore", "keystore.jks");
System.setProperty("javax.net.ssl.trustStrore", "cacerts.jks");
System.setProperty("javax.net.ssl.keyStorePassword", "changeit");
String trustStore = System.getProperty("javax.net.ssl.trustStore");
if (trustStore == null) {
System.out.println("javax.net.ssl.trustStore is not defined");
} else {
System.out.println("javax.net.ssl.trustStore = " + trustStore);
}
}
}
Run Code Online (Sandbox Code Playgroud)
如何正确设置路径?
**********UPDATE************使用getFile()方法和一些其他调试数据:
package ssltest;
public class Main {
public static void main(String[] args) {
// System.setProperty("javax.net.ssl.keyStore", "/keystore.jks");
// System.setProperty("javax.net.ssl.trustStrore", "/java.home/cacerts.jks");
// System.setProperty("javax.net.ssl.keyStorePassword", "changeit");
// System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
try {
Main.class.getResource("trustStore.jks").getFile(); …Run Code Online (Sandbox Code Playgroud) 我正在尝试做类似的事情
URL clientks = com.messaging.SubscriptionManager.class.getResource( "client.ks" );
String path = clientks.toURI().getPath();
System.setProperty( "javax.net.ssl.keyStore", path);
Run Code Online (Sandbox Code Playgroud)
其中client.ks是存储在我正在运行的jar文件中的com/messaging中的文件.
读取javax.net.ssl.keyStore的东西需要一个到jar中的client.ks文件的路径.如果可能的话,我宁愿不提取文件并放入客户端的机器上.那么可以在jar中引用一个文件吗?
这不起作用,因为getPath()返回null.还有另一种方法吗?