java.security.InvalidalgorithParameterException:trustAnchors参数必须为非空

java.security.InvalidalgorithParameterException:trustAnchors参数必须为非空,java,windows,ssl,ssl-certificate,Java,Windows,Ssl,Ssl Certificate,我已经在Keystore中添加了证书,我正在尝试使用Java代码连接到电子邮件交换服务器。当我连接时,它抛出一个异常 当我在eclipse中执行相同的Java代码时,同样的事情也可以正常工作,但当我使用失败的服务执行相同的Java代码时,同样的事情就会失败 这是我的密码: public static void getEmailConnection(String folder){ try{ Store store = null; Properties properties =

我已经在Keystore中添加了证书,我正在尝试使用Java代码连接到电子邮件交换服务器。当我连接时,它抛出一个异常

当我在eclipse中执行相同的Java代码时,同样的事情也可以正常工作,但当我使用失败的服务执行相同的Java代码时,同样的事情就会失败

这是我的密码:

public static void getEmailConnection(String folder){

try{

    Store store = null;
    Properties properties = System.getProperties();
    Folder emailFolder = null;

    final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
    String host = "HOST NAME";
    String username = "username";// change accordingly
    String password = "password";// change accordingly
    String mailStoreType = "pop3";
    String port = "1234";

    //Set manual Properties
    properties.setProperty("mail.pop3.socketFactory.class", SSL_FACTORY);
    properties.setProperty("mail.pop3.socketFactory.fallback", "false");
    properties.setProperty("mail.pop3.socketFactory.port", port);
    properties.setProperty("mail.store.protocol", mailStoreType);
    properties.setProperty("mail.pop3.host", host);
    properties.setProperty("mail.pop3.port", port);


    Session emailSession = Session.getDefaultInstance(properties);
    //create the POP3 store object and connect with the pop server
    store = emailSession.getStore("pop3");
    store.connect(host,1234,username, password);

    emailFolder = store.getFolder(folder);
    emailFolder.open(Folder.READ_ONLY);

}catch(Exception e){
    throw new BsfConstraintViolationException("Unable to connect to Exchange Server",e);
    }
}
请找到下面的堆栈跟踪

原因:java.lang.RuntimeException:意外错误:java.security.InvalidalgorithParameterException:trustAnchors参数必须为非空 位于sun.security.validator.PKIXValidator.(PKIXValidator.java:90) 位于sun.security.validator.validator.getInstance(validator.java:179) 位于sun.security.ssl.X509TrustManagerImpl.getValidator(X509TrustManagerImpl.java:314) 在sun.security.ssl.X509TrustManagerImpl.CheckTrustedIt(X509TrustManagerImpl.java:173)上 位于sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:186) 位于sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:126) 位于sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1320) 位于sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:154) 位于sun.security.ssl.Handshaker.processLoop(Handshaker.java:868) 位于sun.security.ssl.Handshaker.process_记录(Handshaker.java:804) 位于sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1032) 位于sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1328) 位于sun.security.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:882) 位于sun.security.ssl.AppInputStream.read(AppInputStream.java:102) ... 还有24个


谁能帮我解决这个问题。

你解决了吗?我有同样的问题,这对我有效:你解决了吗?我有同样的问题,这对我有效: