2012-01-05 21 views
0

我從matlab調用java函數。該功能運行良好,在Eclipse中,但是當我從MATLAB調用我得到這個異常:Matlab的Java接口:java.io.IOException:在可信CA列表中找不到頒發者?

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

如果你在matlab中使用Java的URL類,你將不得不通過處理程序。
我用這個構造方法:

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

它工作得很好。

注:sun.net.www.protocol.https.Handler僅在MATLAB提供

1

此錯誤表示在嘗試建立HTTPS連接時,Google提供的證書頒發者無法在運行Mathlab時使用的JVM使用的證書頒發機構列表中檢索。

應先找出到底是哪JVM所使用的Mathlab運行時,則發現JVM的認證機構名單,通常在{JRE_HOME}/lib/security中/ cacerts的

就應該添加谷歌的證書頒發機構(我不知道他們用誰)到該列表(使用keytool:http://nl.globalsign.com/en/support/ssl+certificates/java/java+based+webserver/keytool+commands/

基本上你需要找到一個權威(* .crt文件)的證書

您可以繞過這個問題確保Mathlab使用更新的JVM(它似乎是你用來運行Eclipse的那個有這個證書)

+0

謝謝,我會嘗試,讓你知道 – 2012-01-05 10:47:38

+0

我已經更換了的cacerts與最新jre6.3文件但它不起作用。此外,我將matlab的jre改爲jre6.3,但它仍然不起作用。 – 2012-01-05 13:44:14

+0

然後我的帖子的第一部分應該適用:找到你正在訪問的谷歌URL使用哪個證書(你可以使用瀏覽器上的屬性來做到這一點,我猜),然後在CACert中導入該證書 – 2012-01-05 13:52:04

相關問題