我从matlab调用java函数。该函数在eclipse中正常运行,但是当我从matlab调用时,我得到了这个例外:
java.io.IOException: The issuer can not be found in the trusted CA list.
异常发生在第二行:
URLConnection Conn = URL("https://www.google.com/accounts/ServiceLoginBoxAuth").openConnection();
Conn.getInputStream();
为什么会这样?任何解决方案?
答案 0 :(得分:1)
错误意味着在尝试建立HTTPS连接时,无法在运行Mathlab时使用的JVM使用的证书颁发机构列表中检索Google提供的证书颁发者。
首先应确定Mathlab在运行时确切使用哪个JVM,然后找到该JVM的证书颁发机构列表,通常在{jre_home} / lib / security / cacerts
中然后你应该将Google证书颁发机构(我不知道他们使用谁)添加到该列表中(使用keytool:http://nl.globalsign.com/en/support/ssl+certificates/java/java+based+webserver/keytool+commands/)
基本上你需要找到该权限的证书(* .crt文件)
您可以通过确保Mathlab使用更新的JVM(似乎您用来运行Eclipse的那个JVM确实拥有此证书)来绕过此问题。
答案 1 :(得分:0)
如果在matlab中使用java的URL类,则必须传递处理程序 我使用了这个构造函数:
URL(null, ServiceLoginBoxAuthUri, sun.net.www.protocol.https.Handler);
它工作正常。
注意:sun.net.www.protocol.https.Handler仅在matlab中可用