开发者

java.lang.RuntimeException: ERROR: Failed to recover corrupt cache entry

I just had this error message from one of my users. (IE8, Java开发者_运维百科 1.6.20 ). It is from an applet which receives instructions from Javascript and executes certain processes on the client.

RangeError
java.lang.RuntimeException: ERROR: Failed to recover corrupt cache entry
at com.sun.deploy.cache.CacheEntry.recover
at com.sun.deploy.cache.CacheEntry.getSignerMap
at com.sun.deploy.cache.CachedJarFile.getSignerMap
at com.sun.deploy.cache.CachedJarFile.access$100
....

Any iddeas what could be causing this?


It might be this bug. If so the workaround would appear to be to clear the java cache and try again.


I have experienced this problem at java1.8_0.31 and Only workaround I found so far that put packed jars (pack.gz) to same directory with your jar(s). When tracing the servlet i see that

JnlpDownloadServlet(3): Request: /MyWeb/signed.jnlp
JnlpDownloadServlet(3): User-Agent: JNLP/1.7.0 javaws/11.31.2.13 (<internal>) Java/1.8.0_31
JnlpDownloadServlet(4): DownloadRequest[path=/signed.jnlp encoding=gzip isPlatformRequest=false]
JnlpDownloadServlet(4): Basic Protocol lookup
JnlpDownloadServlet(4): JnlpResource: JnlpResource[WAR Path: /signed.jnlp lastModified=Wed Feb 11 09:13:42 EET 2015]]
JnlpDownloadServlet(3): Resource returned: /signed.jnlp
JnlpDownloadServlet(4): SupportQuery in Href: true
JnlpDownloadServlet(4): lastModified: 1423638822000 Wed Feb 11 09:13:42 EET 2015
JnlpDownloadServlet(3): Request: /MyWeb/GUIJars/signed/main.jar?version-id=1.101
JnlpDownloadServlet(3): User-Agent: JNLP/1.7.0 javaws/11.31.2.13 (<internal>) Java/1.8.0_31
JnlpDownloadServlet(4): DownloadRequest[path=/GUIJars/signed/main.jar encoding=pack200-gzip,gzip query=version-id=1.101 version=1.101 isPlatformRequest=false]
JnlpDownloadServlet(4): Version-based/Extension based lookup
JnlpDownloadServlet(4): JnlpResource: JnlpResource[WAR Path: /GUIJars/signed/main__V1.101.jar versionId=1.101 name=main.jar lastModified=Fri Feb 13 16:28:36 EET 2015] returnVersionId=1.101]
JnlpDownloadServlet(3): Resource returned: /GUIJars/signed/main__V1.101.jar
JnlpDownloadServlet(4): Real resource returned: JnlpResource[WAR Path: /GUIJars/signed/main__V1.101.jar versionId=1.101 name=main.jar lastModified=Fri Feb 13 16:28:36 EET 2015] returnVersionId=1.101]

And at client side when tracing log is shown that

network: ResponseCode for http://mydomain.com.tr/MyWeb/GUIJars/signed/main.jar?version-id=1.101 : 200
network: Encoding for http://mydomain.com.tr/MyWeb/GUIJars/signed/main.jar?version-id=1.101 : gzip
network: Server response: (length: -1, lastModified: Fri Feb 13 16:28:36 EET 2015, downloadVersion: 1.101, mimeType: application/java-archive)
network: Created version ID: 1.101
network: Created version ID: 1.101
network: Created version ID: 1.101
network: Cache entry not found [url: http://mydomain.com.tr/MyWeb/GUIJars/signed/main.jar, version: 1.101]
network: Downloading resource: http://mydomain.com.tr/MyWeb/GUIJars/signed/main.jar?version-id=1.101
    Content-Length: -1
    Content-Encoding: gzip
network: Wrote URL http://mydomain.com.tr/MyWeb/GUIJars/signed/main.jar?version-id=1.101 to File C:\myCache\MyWeb\6.0\33\5a0dab21-647c684d-1.101--temp
network: Disconnect connection to http://mydomain.com.tr/MyWeb/GUIJars/signed/main.jar?version-id=1.101
network: Cache: Enable a new CacheEntry: http://mydomain.com.tr/MyWeb/GUIJars/signed/main.jar
network: Downloaded http://mydomain.com.tr/MyWeb/GUIJars/signed/main.jar: C:\myCache\MyWeb\6.0\33\5a0dab21-647c684d-1.101-
cache: Adding MemoryCache entry: http://mydomain.com.tr/MyWeb/GUIJars/signed/main.jar
java.util.zip.ZipException: error in opening zip file
    at java.util.zip.ZipFile.open(Native Method)
    at java.util.zip.ZipFile.<init>(Unknown Source)
    at java.util.zip.ZipFile.<init>(Unknown Source)
    at java.util.jar.JarFile.<init>(Unknown Source)
    at java.util.jar.JarFile.<init>(Unknown Source)
    at com.sun.deploy.security.EnhancedJarVerifier.validate(Unknown Source)
    at com.sun.deploy.cache.CacheEntry.getJarSigningData(Unknown Source)
    at com.sun.deploy.cache.CacheEntry.getCodeSigners(Unknown Source)
    at com.sun.deploy.ref.CodeRef.getCodeSigners(Unknown Source)
    at com.sun.deploy.security.ruleset.RuleId.contains(Unknown Source)
    at com.sun.deploy.security.ruleset.DRSHelper.findRule(Unknown Source)
    at com.sun.deploy.security.ruleset.DeploymentRuleSet.getDRS(Unknown Source)
    at com.sun.deploy.security.ruleset.DeploymentRuleSet.findDRS(Unknown Source)
    at com.sun.javaws.jnl.LaunchDesc.getMainDeploymentRuleSet(Unknown Source)
    at com.sun.javaws.jnl.LaunchDesc.getMatchImpl(Unknown Source)
    at com.sun.javaws.jnl.LaunchDesc.getJREMatcher(Unknown Source)
    at com.sun.javaws.Launcher.prepareLaunchFile(Unknown Source)
    at com.sun.javaws.Launcher.prepareAllResources(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.access$000(Unknown Source)
    at com.sun.javaws.Main$1.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
cache: Trying to recover cache entry for http://mydomain.com.tr/MyWeb/GUIJars/signed/main.jar
cache: MemoryCache: removed entry http://mydomain.com.tr/MyWeb/GUIJars/signed/main.jar
network: Remove cache entry: http://mydomain.com.tr/MyWeb/GUIJars/signed/main.jar
network: Cache entry not found [url: http://mydomain.com.tr/MyWeb/GUIJars/signed/main.jar, version: 1.101]
java.lang.RuntimeException: ERROR: Recovery got null entry
    at com.sun.deploy.cache.CacheEntry.recover(Unknown Source)
    at com.sun.deploy.cache.CacheEntry.getJarSigningData(Unknown Source)
    at com.sun.deploy.cache.CacheEntry.getCodeSigners(Unknown Source)
    at com.sun.deploy.ref.CodeRef.getCodeSigners(Unknown Source)
    at com.sun.deploy.security.ruleset.RuleId.contains(Unknown Source)
    at com.sun.deploy.security.ruleset.DRSHelper.findRule(Unknown Source)
    at com.sun.deploy.security.ruleset.DeploymentRuleSet.getDRS(Unknown Source)
    at com.sun.deploy.security.ruleset.DeploymentRuleSet.findDRS(Unknown Source)
    at com.sun.javaws.jnl.LaunchDesc.getMainDeploymentRuleSet(Unknown Source)
    at com.sun.javaws.jnl.LaunchDesc.getMatchImpl(Unknown Source)
    at com.sun.javaws.jnl.LaunchDesc.getJREMatcher(Unknown Source)
    at com.sun.javaws.Launcher.prepareLaunchFile(Unknown Source)
    at com.sun.javaws.Launcher.prepareAllResources(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.access$000(Unknown Source)
    at com.sun.javaws.Main$1.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source) 

Client behaves coming plain jar file as packed and gziped jar. Maybe need to examine HTTP Header to why client do that.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜