"无法加载资源"因为" ZipException:无效的条目大小"

时间:2016-01-05 21:59:03

标签: java jnlp xerces

我有一个Java 8项目,可以创建大约12个JNLP应用程序。我已成功在Windows上构建并运行它们。 JNLP通过javaws正确启动。然后我通过FTP(在二进制模式下)将它作为.tar传输到Solaris机器,我的SA通过Tomcat进行部署。

当我访问URL以通过网络启动JNLP时,我收到应用程序错误。

例外是:

com.sun.deploy.net.FailedDownloadException: Unable to load resource: https://example.com/webstartdev10g/dev/apps/libs/xerces.jar
    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(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

Wrapped Exception是:

java.util.zip.ZipException: invalid entry size (expected 19075 but got 11917 bytes)
    at java.util.zip.ZipOutputStream.closeEntry(ZipOutputStream.java:287)
    at java.util.zip.ZipOutputStream.finish(ZipOutputStream.java:360)
    at java.util.zip.DeflaterOutputStream.close(DeflaterOutputStream.java:238)
    at java.util.zip.ZipOutputStream.close(ZipOutputStream.java:377)
    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(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

依赖于xerces的所有JNLP应用程序都有同样的错误。不需要xerces的应用似乎工作正常。我检查了xerces.jar文件在我的Windows机器和Solaris机器上的大小是否相同。我直接访问了https://example.com/webstartdev10g/dev/apps/libs/xerces.jar并能够下载该文件并将其打开。我甚至用下载的版本替换了我的本地副本,并在本地运行应用程序而没有任何错误。基于此,看起来文件实际上没有任何问题。

有什么想法可以帮助我缩小范围吗?

修改

我打开了javaws -verbose标志,以获取有关当我使用下载的jar在本地启动JNLP时发生的情况的更多详细信息。事实证明,我 am 仍然会收到错误,但它并没有阻止应用程序启动。它只是以静默方式登录到控制台,列出了不同的大小。

java.util.zip.ZipException: invalid entry size (expected 19075 but got 16384 bytes)

我还不确定这个文件是如何出现这个问题的,或者为什么它在两台机器上都报告自己的大小相同。

1 个答案:

答案 0 :(得分:0)

我重建,转发并重新部署了这些应用。他们似乎现在正在工作。我仍然对症状是如何呈现自己感到困惑,并且对任何发生的事情的理论感兴趣(除了“文件在转移过程中被某种程度上损坏”)。

在任何情况下,使用javaws -verbose帮助我获得有关该问题的一些线索,并重新部署tar文件解决了该问题。