Glassfish(v3)应用程序部署中的java.util.zip.ZipException

时间:2010-05-15 17:19:34

标签: java netbeans java-ee glassfish glassfish-3

我的EJB3.1应用程序出现了一个奇怪的异常,在应用程序部署期间抛出ZipException

[#|2010-05-15T16:01:44.688+0100|SEVERE|glassfish3.0.1|javax.enterprise.system.container.web.org.glassfish.web.loader|_ThreadID=22;_ThreadName=Thread-1;|WEB9051: Error trying to scan the classes at /Users/kevin/Documents/netbeans/WebAlbums/trunk/WebAlbums3/WebAlbums3-ea/dist/gfdeploy/WebAlbums3-Service.jar for annotations in which a ServletContainerInitializer has expressed interest
java.util.zip.ZipException: error in opening zip file
    at java.util.zip.ZipFile.open(Native Method)
    at java.util.zip.ZipFile.<init>(ZipFile.java:114)
    at java.util.jar.JarFile.<init>(JarFile.java:133)
    at java.util.jar.JarFile.<init>(JarFile.java:70)
    at org.glassfish.web.loader.ServletContainerInitializerUtil.getInitializerList(ServletContainerInitializerUtil.java:255)
    at org.apache.catalina.core.StandardContext.callServletContainerInitializers(StandardContext.java:5331)
    at com.sun.enterprise.web.WebModule.callServletContainerInitializers(WebModule.java:550)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:5263)
    at com.sun.enterprise.web.WebModule.start(WebModule.java:499)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:928)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:912)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:694)
    at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1947)
    at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1619)
    at com.sun.enterprise.web.WebApplication.start(WebApplication.java:90)
    at org.glassfish.internal.data.EngineRef.start(EngineRef.java:126)
    at org.glassfish.internal.data.ModuleInfo.start(ModuleInfo.java:241)
    at org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:236)
    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:339)
    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:183)
    at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:272)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:305)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:320)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1176)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$900(CommandRunnerImpl.java:83)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1235)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1224)
    at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:365)
    at com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:204)
    at com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:166)
    at com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:100)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:245)
    at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
    at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
    at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
    at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
    at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
    at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
    at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
    at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
    at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
    at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
    at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
    at java.lang.Thread.run(Thread.java:637)
|#]

我真的不知道如何调查此错误;我知道它与Glassfish安装无关(在Ubuntu和Mac上也是如此)。


编辑: (类路径细节似乎没用)

... / WebAlbums3-ea / dist / gfdeploy / WebAlbums3-Service.jar的问题是这个文件实际上并不存在于Glassfish正在寻找的地方...... 相反,我有一个名为WebAlbums3-Service_jar的文件夹


(我正在使用Netbeans 6.8,Glassfish v3,Servlet3,EJB 3.1,JPA / Hibernate)

感谢您的帮助

编辑:问题(ZipException和已加载的EJB)都是通过提取定义实现的外部的EJB接口来解决的(实现类是用每个模块加载的,因此EJB异常)

4 个答案:

答案 0 :(得分:1)

  

尝试在/Users/kevin/Documents/netbeans/WebAlbums/trunk/WebAlbums3/WebAlbums3-ea/dist/gfdeploy/WebAlbums3-Service.jar中扫描类,以查找ServletContainerInitializer表示兴趣的注释

java.util.zip.ZipException: error in opening zip file

看起来JAR文件已损坏。重新编译/替换它。如果您在部署期间对此进行FTP处理,请注意将二进制文件作为二进制数据发送,而不是作为文本数据发送。

这也可能是因为临时存储已满或无法写入。

更新Google了解到这可能也是JDK特有的。尝试将JDK升级到最新版本。

答案 1 :(得分:1)

我在网上看到过多次提到这个问题,例如this one,提到它是非阻塞的:

  

如果在部署EAR后出现以下错误,请不要担心,这很正常:“WEB9051:尝试扫描... / eclipseApps / Seven / SevenEJB.jar中的类时出错,其中包含ServletContainerInitializer的注释表示有兴趣“。见这里。

还有Issue 11149Issue 11341。您的情况似乎有所不同,但如果不是(如果您的文件名中有一个带有“+”的jar),则应在GF v3.0.1中修复。

如果这不适用于您,我建议creating an issue。即使没有阻塞,这显然也不正常。

答案 2 :(得分:0)

你能用winzip或7zip打开zip文件吗? 你能用ZipFile以编程方式打开文件吗? 我相信其中一个问题会被评估为假。

前段时间我有一些奇怪的zip错误与所包含文件名称中的特殊字符有关(特殊含义,非ASCII字符)。

答案 3 :(得分:0)

  

拥有'_'而不是'。'使用爆炸部署时是正常的(这就是应该如何部署爆炸的工件)

它可能是“正常”但是GF正在寻找一个不存在的myEJB.jar文件。只有一个爆炸的人工制品,然后没有部署。

  

问题(ZipException和已加载的EJB)都是通过在定义实现的地方之外提取EJB接口来解决的(实现类是用每个模块加载的,因此是EJB异常)

我不确定这是如何解决上述问题的。我的实现类是一个单独的消息bean。