2011-06-24 108 views
2

我編寫了一個基本的java程序來測試jnlp並從eclipse導出爲runnable jar並用jarsigner簽名。java web start無法在第二次運行時啓動

JNLP文件如下:

<?xml version="1.0" encoding="utf-8"?> 
    <jnlp spec="1.0+" codebase="http://192.168.2.15/test" href="test.jnlp"> 
     <information> 
      <title>test</title> 
      <vendor>test</vendor> 
      <homepage href="http://192.168.2.15/test" /> 
      <description>test</description> 
     </information> 
     <security> 
      <all-permissions/> 
     </security> 
     <resources> 
      <j2se version="1.6+" /> 
      <jar href="test.jar" /> 
     </resources> 
     <application-desc main-class="Test.main"> 
     </application-desc> 
    </jnlp> 

時,我就與[javaws的http://192.168.2.15/test/test.jnlp],它按預期工作第一次運行一個測試。

當我重試第二次,Java Web Start的是無法午餐計劃,並給予下列錯誤

java.io.IOException: Server returned HTTP response code: 500 for URL: [http://192.168.2.15/test/test.jar] 
    at sun.reflect.GeneratedConstructorAccessor2.newInstance(Unknown Source) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 
    at java.lang.reflect.Constructor.newInstance(Unknown Source) 
    at sun.net.www.protocol.http.HttpURLConnection$6.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at sun.net.www.protocol.http.HttpURLConnection.getChainedException(Unknown Source) 
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source) 
    at com.sun.deploy.net.BasicHttpRequest.doRequest(Unknown Source) 
    at com.sun.deploy.net.BasicHttpRequest.doGetRequestEX(Unknown Source) 
    at com.sun.deploy.net.DownloadEngine.isUpdateAvailable(Unknown Source) 
    at com.sun.deploy.net.DownloadEngine.isUpdateAvailable(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.javaws.LaunchDownload$DownloadTask.call(Unknown Source) 
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) 
    at java.util.concurrent.FutureTask.run(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
Caused by: java.io.IOException: Server returned HTTP response code: 500 for URL: [http://192.168.2.15/test/test.jar] 
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source) 
    at java.net.HttpURLConnection.getResponseCode(Unknown Source) 
    ... 13 more 

當我通過javaws -uninstall反安裝從緩存中的程序,並嘗試通過javaws的運行[HTTP: //192.168.2.15/test/test.jnlp]通常againg爲第一次運行工作,但當我第二次嘗試時,我得到了上述相同的錯誤。

我的測試平臺是Windows 7的最終版本,並安裝了最新的java版本。

我是Java新手,我找不到問題。你可以幫幫我嗎?檢查與JaNeLA我的JNLP文件的

結果:

JaNeLA報告 - 版本17年5月11日

報告http://192.168.2.15/sistem/toplanti/test.jnlp

  • XML編碼不得而知,但聲明爲UTF-8
  • Codebase + href'http://192.168.2.15/Sistem/Toplanti/test.jnlp'不等於'http://192.168.2.15/sistem/toplanti/tes'的實際位置t.jnlp」。
  • 通過添加標誌來優化此應用程序的脫機使用。
  • 可以通過指定'test.jar'的資源大小來優化下載。
  • 可以通過刪除download ='eager'的(默認)值來優化test.jar上的資源下載。
  • 可以通過刪除main ='false'的(默認)值來優化test.jar中的資源下載。
  • 可能可以優化應用程序的啓動。通過爲test.jar資源指定download ='lazy'。
  • 延遲下載可能無法按預期工作test.jar,除非指定了下載「部分」。

我仍然在試圖解決這個問題,當我測試在具有操作系統爲Windows XP的PC的JNLP,我沒有得到任何錯誤,同樣的JNLP始終運行(第一次運行,第二次運行,...) 還有另一個電腦(Windows 7的專業)我也在測試中,並得到了同樣的錯誤,即第一次工作,第二次運行得到錯誤...

回答

0

它看起來就像您正在使用的Web服務器在嘗試訪問URL時返回錯誤500。

如果是這樣,它不是Java WebStart的問題,而是Web服務器的問題。你是怎麼設置的?

+0

Sory我無法理解,我使用默認設置設置了我的Web服務器,我不知道我應該控制什麼。另一方面,正如我在我的帖子中說,它正在爲第一次運行工作,我的意思是它已成功地加載程序並運行,我得到第二次和其他運行的錯誤。 –

0

使用JaNeLA檢查JNLP。

+0

嗨,安德魯,你說,我使用Janela檢查了我的test.jnlp,得到如下結果 –

+0

OK。你希望我做什麼,根據輸出結果給你提供建議?我會給你一個提示,忽略警告和優化(暫時),並專注於錯誤。哦,這是拼寫'系統'與'Y',而不是'系統'與'我'。 –

1

我做了一些測試後終於解決了我的問題。我發現它與web.config有關,對於我的應用程序,我使用telerik工具,web.config中有一行用於壓縮,如[add name="RadCompression" type="Telerik.Web.UI.RadCompression" preCondition="integratedMode" ]。我通過評論(刪除)這一行解決了我的問題。

:)