Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab java接口:java.io.IOException:在可信CA列表中找不到颁发者?_Java_Exception_Matlab_Ca - Fatal编程技术网

Matlab java接口:java.io.IOException:在可信CA列表中找不到颁发者?

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

我从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();

为什么会这样?任何解决方案?

该错误意味着在尝试建立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中