0

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

为什么会这样?有什么解决办法吗?

4

2 回答 2

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+命令/ )

基本上你需要找到该机构的证书(*.crt 文件)

您可以通过确保 Mathlab 使用更新的 JVM 来绕过这个问题(似乎您用来运行 Eclipse 的那个确实有这个证书)

于 2012-01-05T10:30:41.173 回答
0

如果在 matlab 中使用 java 的 URL 类,则必须传递处理程序。
我使用了这个构造函数:

URL(null, ServiceLoginBoxAuthUri, sun.net.www.protocol.https.Handler);  

它工作得很好。

注意:sun.net.www.protocol.https.Handler 仅在 matlab 中可用

于 2012-01-11T13:22:58.923 回答