Matlab java接口:java.io.IOException:在可信CA列表中找不到颁发者?
我从matlab调用java函数。该函数在eclipse中运行良好,但当我从matlab调用时,出现以下异常:Matlab java接口:java.io.IOException:在可信CA列表中找不到颁发者?,java,exception,matlab,ca,Java,Exception,Matlab,Ca,我从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.getInpu
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();
为什么会这样?任何解决方案?该错误意味着在尝试建立HTTPS连接时,无法在运行Mathlab时使用的JVM使用的证书颁发机构列表中检索到Google提供的证书的颁发者 您应该首先确定Mathlab在运行时使用的JVM,然后找到该JVM的证书颁发机构列表,通常位于{jre_home}/lib/security/cacerts中 然后,您应该将Google证书颁发机构(我不知道他们使用的是谁)添加到该列表中(使用keytool:) 基本上,您需要找到该机构的证书(*.crt文件)
您可以通过确保Mathlab使用较新的JVM(运行Eclipse的JVM似乎有此证书)绕过此问题。如果您在matlab中使用java的URL类,则必须传递处理程序。
我使用了这个构造函数:
URL(null, ServiceLoginBoxAuthUri, sun.net.www.protocol.https.Handler);
而且效果很好
注意:sun.net.www.protocol.https.Handler仅在matlab中可用谢谢,我会尝试一下,让您知道我已经用最新的jre6.3替换了cacerts文件,但它不起作用。此外,我将matlab的jre更改为jre6.3,但它仍然不起作用。然后,我的文章的第一部分应该适用:找到您正在访问的google URL使用的证书(我想您可以使用浏览器上的属性来完成),然后将该证书导入您的CACert中