2012-03-08 78 views
8

答案: It 出現(通過我們的測試),Java 7 Web Start要求您使用SSL證書在服務器上託管您的資源。您的證書不需要簽名,但未簽名的證書將以信任消息提示客戶他們可以忽略。 見下回答更多細節Java Web Start自JDK 1.7破解

我們有我們一直在使用,現在多年的內部應用程序。爲了使這個應用程序更容易維護,我們沒有向我們的員工提供應用程序的可安裝版本,我們只需給他們一個.jnlp鏈接並使用JWS在他們的盒子上啓動它。迄今爲止,這一切都非常棒,但只要我們的任何員工升級到Java 7,JWS系統就會停止在他們的計算機上工作。我們檢查,重新檢查,甚至驗證了我們的JNLP模式,這很好,這導致我們認爲Web Start本身存在問題。

當用戶點擊JNLP文件,它啓動Java 7的啓動畫面,然後開始下載我們所需要的資源。從那裏它只是掛起,JWS啓動應用程序的進度條保持在百分之零。

任何想法?這是因爲他們升級到Java 7而導致的。同時,我們建議所有員工留在Java 6上,直到另行通知。我們所有的代碼都已正確簽名。

這裏是我們的JNLP的副本:

<?xml version="1.0" encoding="utf-8"?> 
<jnlp 
    spec="1.5+" 
    codebase="http://peiportal/updater"> 
    <information> 
    <title>PEI Portal Application</title> 
    <vendor>Petz Enterprises, Inc.</vendor> 
    <offline-allowed/> 
    </information> 
    <security> 
     <all-permissions/> 
    </security> 
    <resources> 
    <jar href="PEIPortalLauncher.jar"/> 
    </resources> 
    <application-desc/> 
</jnlp> 
+0

您是否試圖完全限定代碼庫中的主機名(peiportal)?這可能不是那麼簡單,但只是一個想法。 – 2012-03-08 19:54:12

+0

恭喜迄今爲止的良好體驗。並非所有人都積極回憶webstart。請從webstart窗口中發佈例外。你有沒有試過'spec =「6.0+」'?您應該向jnlp元素添加屬性'href =「http:// peiportal/updater/path to jnlp file」'。 – Stephan 2012-03-08 19:57:04

+0

'j2se'和'application-desc'元素也缺失。我認爲1.5規範已經過時了。 – Stephan 2012-03-08 20:04:25

回答

12

我們最近就遇到了這個問題,當人們開始對他們的Windows機器上安裝的Java 7。我們在三個不同的linux服務器上有jar文件的實例,並發現我們可以從其中的兩個下載應用程序,一個是遠程的,一個是本地的,但不是第三個,也是本地服務器。

關鍵在於jnlp文件中的代碼庫規範。爲了將jar文件成功下載到運行Java 7的Windows框中,代碼庫必須指定「https:...」而不是「http:...」。

上面引用遠程服務器被設置爲一個安全的服務器等被專門設置以https。本地服務器都沒有安全地設置,但只是在代碼庫規範中使用「https:」。改變另一臺服務器上的jnlp也使其工作。 (我們的jnlp是模板化的,並且針對源控制之外的每次安裝都進行了修改,因此存在潛在的差異。)

您可能需要刪除Java控制面板中列出的任何非工作應用程序,以便與新的jnlp同步您的服務器:進入Java控制面板的常規選項卡(可從Windows控制面板獲得),按下「臨時Internet文件」下的「查看...」按鈕,然後刪除所有不工作的應用程序。

+2

這完全是問題所在。我們一直在尋找這個解決方案,並且沒有在哪裏標明他們在Java 7中下載資源時需要SSL來啓動Web Start。希望其他人能夠看到這個並且現在就得到解決方案,謝謝。 – 2012-08-16 18:50:05

2

雖然GRW的答案肯定是正確的,我工作圍繞這個問題在我的JNLP文件迫使1.6:

<resources> 
- <j2se version="1.6+" java-vm-args="-Xmx256M"/> 
+ <j2se version="1.6" java-vm-args="-Xmx256M"/> 

使用上面的補丁的第二行,沒有加分。這應該強制Java 7使用Java 6 JRE下載文件,然後這些文件就可以工作。

+0

我剛剛測試過它,它似乎工作,但我想指出的警告,你仍然必須安裝一個1.6的JVM,以實際得到它運行(顯然)。儘管如此,但我們還沒有包括上述線路,因此我們甚至沒有探索過這條線路。 – 2012-09-06 16:18:55

+1

我相信Java 7 vm會安裝正確的版本,如果你用上面的代碼索要它的話。我不確定,但很確定。 – 2012-09-06 20:34:43

+0

從我理解架構的方式來看,如果您添加以下href屬性:href =「http://java.sun.com/products/autodl/j2se」我找到了最有價值的信息:http:/ /mindprod.com/jgloss/jnlp.html – 2012-09-07 00:23:00

1

當用戶點擊jnlp文件時,它啓動Java 7啓動畫面,然後開始下載我們需要的資源。從那裏它只是掛起,JWS啓動應用程序的進度條保持在百分之零。

FWIW,這也可能是由Webstart中的死鎖造成的,它只能在7u10中解決(截至目前仍處於測試階段)。見http://javafx-jira.kenai.com/browse/RT-25023。死鎖似乎在GUI線程(例如,用於Java控制檯)和jar下載線程之間。

+0

聽起來像它可能很好的問題。我們轉而使用SSL並解決了這個問題,但這可能是它仍不能解決不安全連接的根源。我會喜歡,但我現在沒有任何時間來測試它了......對於在Java 7早期版本中遇到問題的其他人來說,仍然有很好的信息,所以謝謝! – 2012-10-05 16:20:30

4

對於任何人誰沒有得到訪問由deepc提供的kenai.com鏈接: 提到的錯誤是

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7191454

我在Java DB錯誤發現的另一個錯誤,可以通過描述匹配可能是

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7177040

希望的Java Web Start將與U10再次工作在HTTP ...


更新:在我們的情況下,它原來,AVG殺毒是原因。在AVG設置中,禁用「Online Shield」和「Surf Shield」,並且Java 7,Windows 7和普通HTTP的組合確實起作用。或升級到最新的AVG 2012版本。參看http://forums.avg.com/in-en/avg-forums?sec=thread&act=show&id=216448

0

我們也有類似的問題後1.7更新,但能夠通過在HREF .jnlp文件轉義字符,即通過與&#和63#& 38改變問號和符號在href值來解決分別。

HREF = 「appname.jnlp?協議= HTTP &主機= XX.XX.XX.XX &端口= XX」

這種方法會更安全一點,如果1.6後1.7更新刪除,保持規格值爲「1.6+」。

2

我們也遇到過這個問題,但是修復的是我們的Apache配置文件中的ServerName和AliasName包含端口號。即domain.com:443。當Java 7比較ServerName時,它不匹配並出現問題。從名字中刪除:443一切都很好。