2011-06-21 87 views
4

所有,Java Web Start的與簽名

我有一個運行Java Web Start的已由Netbeans的7所

我已經遷移我現有的Java 6.9.1應用程序的Netbeans 7應用程序有些麻煩並試圖使其成爲一個網絡啓動應用程序。

爲此,我已從項目屬性中選中了「啓用Web啓動」選項。

對於代碼庫選項,我選擇了Web應用程序部署。 應用程序描述符是選中的選項,它將JNLP application-desc元素指向我的應用程序主類。

對於簽名,我已經生成了一個密鑰並在此處指出簽名屬性。我將混合代碼設置爲「僅受信任」,因爲我的應用程序僅使用簽名的JAR。

當我編譯,所有被引用的JAR文件和應用程序JAR文件的簽署是在控制檯(每一個人)輸出:

Signing JAR: D:\MyCode\dist\lib\somejarfile.jar to D:\MyCode\dist\lib\somejarfile.jar as signFiles 
Enter Passphrase for keystore: Enter key password for signFiles: 

注: signFiles是我用過的別名在Netbeans的簽名屬性中。

  • LIB
  • jnlpcomponent1.jnlp
  • launch.html
  • launch.jnlp
  • README.TXT
  • 我的應用:

    下面的文件在我的文件夾DIST創建.jar

我已將這些複製到我在Tomcat託管的Web文件夾中,該文件夾是C:\ Program Files \ Apache Software Foundation \ Tomcat 7.0 \ webapps \ mywebapp。

我在IE和Firefox下面的網址上運行: http://mylaptop:8080/mywebapp/launch.html

,當我在launch.html點擊按鈕啓動JNLP文件以下異常被拋出:

com.sun.deploy.net.FailedDownloadException: Unable to load resource: file:/C:/Users/panderson/AppData/Local/Microsoft/Windows/Temporary Internet Files/Content.IE5/B3UCQV8C/$$codebase/launch.jnlp 
at com.sun.deploy.net.DownloadEngine.actionDownload(Unknown Source) 
at com.sun.deploy.net.DownloadEngine.getCacheEntry(Unknown Source) 
at com.sun.deploy.net.DownloadEngine.getCacheEntry(Unknown Source) 
at com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(Unknown Source) 
at com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(Unknown Source) 
at com.sun.deploy.net.DownloadEngine.getResource(Unknown Source) 
at com.sun.deploy.net.DownloadEngine.getResource(Unknown Source) 
at com.sun.javaws.Launcher.updateFinalLaunchDesc(Unknown Source) 
at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source) 
at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source) 
at com.sun.javaws.Launcher.launch(Unknown Source) 
at com.sun.javaws.Main.launchApp(Unknown Source) 
at com.sun.javaws.Main.continueInSecureThread(Unknown Source) 
at com.sun.javaws.Main$1.run(Unknown Source) 
at java.lang.Thread.run(Unknown Source) 

我launch.jnlp文件有以下幾點:

<jnlp codebase="$$codebase" href="launch.jnlp" spec="1.0+"> 
... 
<resources> 
    <j2se version="1.6+"/> 
    <jar href="My App.jar" main="true"/> 
... 

我也不太清楚爲什麼它正在尋求在互聯網EXPL的臨時文件夾下ORER它...

...但我試圖把完整的URL在JNLP HREF到launch.JNLP文件http://mylaptop:8080/mywebapp/launch.jnlp那麼它拋出以下異常:

com.sun.deploy.net.FailedDownloadException: Unable to load resource: file:/C:/Users/panderson/AppData/Local/Microsoft/Windows/Temporary Internet Files/Content.IE5/DR2O6URQ/$$codebase/My App.jar 

若我改變jar href到http://mylaptop:8080/mywebapp/My App.jar,當我點擊launch.html中的按鈕來運行launch.JNLP文件時,會引發以下異常。

BadFieldException[ The field <jnlp>codebase has an invalid value: $$codebase,$$codebase] 

任何幫助或想法?

乾杯,

Andez

+0

@Andrew--有希望成爲JWS問題。只要使用netbeans - 它有時會隱藏您在運行時碰到的潛在問題。 :-( – Andez

回答

3
<jnlp codebase="$$codebase" href="launch.jnlp" spec="1.0+"> 

這些$$佔位符值通常會被servlet或類似功能轉換爲合理的值。

+1

嘿,安德魯,你剛剛打敗我這裏有幾個問題,你提到的第一件事就是代碼庫,我把它改成了URL,例如http:// mylaptop:8080/mewebapp;其次,我的名字似乎存在問題JAR文件,因爲它在文件名中有一個空格,所以無法加載資源文件 – Andez

+0

HTML中的空格一般應該被替換爲..我認爲它是'%20'。但是,我避免使用上限。或者Jar名稱中的空格。而不是空格,''''或'-'或'_'通常就足夠了。 –

2

此建議如以下question的有用工具。

嘗試使用JaNeLA並查看它是否發現您的JNLP文件有任何問題。

進一步仔細檢查並確保codebase url與您的服務器/應用程序的url匹配。

+0

+1血腥的好處!JaNeLA會從代碼庫中挑選出與JNLP有關的各種問題。 –

+0

感謝與Janela的鏈接。將派上用場。 – Andez