ssl java接続をテストするために自己署名証明書を設定しましたが、javatrustStoreを見つけることを拒否しています。クラスがコンパイルされるフォルダ(netbeansを使用している)と/ java / jre6 / binに加えて、そのコピーを/ Java / jre6 / lib / securityに保存しました。これは、上記のいずれも機能していないように見えるためです。次のコマンドを実行すると、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);
}
}
}
パスを正しく設定する方法は?
********** 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();
} catch (Exception e) {
e.printStackTrace();
}
String trustStore = System.getProperty("javax.net.ssl.trustStore");
if (trustStore == null) {
String storeLoc;
storeLoc = System.getProperty("java.class.path");
System.out.println("classpath: " + storeLoc);
}
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);
}
}
}
実行:java.lang.NullPointerExceptionクラスパス:C:\ Users \ Main \ Documents \ NetBeansProjects \ sslTest \ build \ classes; C:\ Users \ Main \ Documents \ NetBeansProjects \ sslTest \ src at ssltest.Main.main(Main.java :15)javax.net.ssl.trustStoreが定義されていませんBUILD SUCCESSFUL(合計時間:0秒)