2013-12-11 5 views
0

Я запускаю приложение для запуска Java с помощью jnlp. Jnlp генерируется динамически с использованием jsp. Я установил jnlp.packEnabled в true в файле jnlp. Все банки упакованы, подписаны и упакованы пакетом java java. используя ниже ant script.java.util.zip.ZipException: Исключено в исключении формата GZIP при запуске приложения java web start с jnlp

<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) 

0 0 Пожалуйста, предложите, как решить эту ошибку. И когда я пытаюсь просмотреть файл * .pack.gz с WINRAR, я мог видеть только один файл с расширением .pack, я не могу его открыть, так как WINRAR говорит, что это поврежденный файл.

EDIT 1: Файл не поврежден. Я могу распаковать его вручную с помощью unpack200 и запустить из командной строки без каких-либо проблем. Исключение отображается только при загрузке файла из jnlp. Я сомневаюсь, что динамическая генерация jnlp из jsp вызывает проблему. Ниже приведен код 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

Tried unpack200 tool. .pack.gz правильно, и приложение запускается из командной строки. Почему веб-старт не использует unpack200 ?. Почему он пытается распаковать файл и давать ** не в исключении формата GZIP **? В jnlp нужно настроить какую-то вещь? – developer