2013-12-11 36 views
0

我使用jnlp啓動java web啓動應用程序。 jnlp是使用jsp動態生成的。我已經在jnlp文件中將jnlp.packEnabled設置爲true。所有的罐子都被重新包裝,簽名和包裝java的pack200。使用下面的ant腳本。java.util.zip.ZipException:使用jnlp啓動java web啓動應用程序時不在GZIP格式異常

<echo message="Repacking jars" /> 
      <apply executable="pack200" parallel="false"> 
       <arg value="--repack" /> 
       <fileset dir="${build.dir}" includes="*.jar" /> 
      </apply> 

      <echo message="Signing jars" /> 
      <signjar destdir="${build.dir}" keyPass="test" keyStore="${project.root}/testKeys" storePass="test" alias="t"> 
       <fileset dir="${build.dir}" includes="*.jar" /> 
      </signjar> 

      <echo message="Pack Signed jars" /> 
      <apply executable="pack200" parallel="false" dest="${build.dir}"> 
       <arg value="--modification-time=latest"/> 
       <arg value="--deflate-hint=true"/> 
       <arg value="--segment-limit=-1"/> 
       <fileset dir="${build.dir}" includes="*.jar" /> 
       <targetfile /> 
       <srcfile /> 
       <mapper type="glob" from="*" to="*.pack.gz" /> 
      </apply> 


java.util.zip.ZipException: Not in GZIP format 
    at java.util.zip.GZIPInputStream.readHeader(Unknown Source) 
    at java.util.zip.GZIPInputStream.<init>(Unknown Source) 
    at java.util.zip.GZIPInputStream.<init>(Unknown Source) 
    at com.sun.deploy.net.HttpDownloadHelper.download(Unknown Source) 
    at com.sun.deploy.cache.Cache.downloadResourceToTempFile(Unknown Source) 
    at com.sun.deploy.cache.Cache.downloadResourceToCache(Unknown Source) 
    at com.sun.deploy.net.DownloadEngine.actionDownload(Unknown Source) 
    at com.sun.deploy.net.DownloadEngine.downloadResource(Unknown Source) 
    at com.sun.deploy.cache.ResourceProviderImpl.getResource(Unknown Source) 
    at com.sun.deploy.cache.ResourceProviderImpl.getResource(Unknown Source) 
    at com.sun.javaws.LaunchDownload$DownloadTask.call(Unknown Source) 
    at java.util.concurrent.FutureTask.run(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 

在網絡啓動應用程序啓動它的給予的錯誤。請建議如何解決此錯誤。 當我嘗試使用WINRAR查看* .pack.gz文件時,我只能看到一個.pack擴展名的文件,我無法用WINRAR打開它說它是一個損壞的文件。

編輯1:文件沒有損壞。我可以使用unpack200手動解包,並從命令提示符運行,沒有任何問題。僅當從jnlp下載文件時才顯示異常。我懷疑jsp的動態生成jnlp是導致這個問題的原因。以下是我的jsp代碼。 您可以請建議我一個解決方案,以擺脫這種異常時,從動態生成的jnlp文件解壓縮。

<%@ page contentType="application/x-java-jnlp-file" language="java"%> 
<%@page session="false" %> 
<% 
response.setContentType("application/x-java-jnlp-file");%> 
<!-- JNLP File --> 
<?xml version="1.0" encoding="utf-8"?> 
<jnlp spec="1.0+"> 
<information> 
<title>Service</title> 
<vendor>Service</vendor> </information> 
<security> <all-permissions /> </security> 
<resources> 
<jfx:javafx-runtime version="2.2.4+" 
    href="http://javadl.sun.com/webapps/download/GetFile/javafx-latest/windows-i586/javafx2.jnlp" /> 
</resources> 
<resources> 
<!-- Application Resources --> 
    <property name="jnlp.packEnabled" value="true"/> 
    <j2se version="1.7+" /> 
    <jar href="Test.jar" main="true"/> 
</resources> 
<application-desc 
    name="main" main-class="com.test.Main" width="300" 
    height="300"> 
    <argument><%= request.getParameter("userId")%></argument> 
    <argument><%= request.getParameter("userName")%></argument> 
</application-desc> 
<update check="always" policy="always" /> 
</jnlp> 
+0

這就是問題所在。該文件在源處受損,或在下載過程中受損。不可能說如何不訪問你所在的環境,但我知道服務器的硬盤壞了。 – Gimby

回答

0

我建議你試試工具unpack200(它在JDK),看看你的.pack.gz是正確的。如果沒有,這可能是一個硬件問題。

+0

試過unpack200工具。 .pack.gz文件是正確的,應用程序從命令提示符運行。爲什麼web start不使用unpack200 ?.爲什麼它試圖解壓縮文件並給出**而不是GZIP格式異常**?有些東西需要在jnlp中配置? – developer

相關問題