java.util.zip.ZipException в развертывании приложения Glassfish (v3)

У меня есть странное исключение с моим приложением 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).


РЕДАКТИРОВАТЬ:(детали classpath кажутся бесполезными)

проблема с.../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 ответа

Решение

Я видел несколько упоминаний об этой проблеме в сети, как эта, которая упоминает, что она не блокирует:

Если после развертывания EAR появляется следующая ошибка, не беспокойтесь, это вполне нормально: "WEB9051: Ошибка при попытке сканирования классов в.../eclipseApps/Seven/SevenEJB.jar для аннотаций, в которых ServletContainerInitializer проявил интерес ". Посмотреть здесь.

А также в выпуске 11149 или выпуске 11341. Ваш случай кажется другим, но если это не так (если у вас есть jar с '+' в имени файла), это должно быть исправлено в GF v3.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 до последней версии.

Можете ли вы открыть zip-файл с помощью winzip или 7zip? Можете ли вы открыть файл программно, используя ZipFile? Я уверен, что один из этих вопросов будет оценен как ложный.

Некоторое время назад у меня были некоторые странные ошибки zip, связанные со специальными символами в именах содержимого файла (где специальные средства, не ASCII-символы).

Наличие "_" вместо "." нормально, когда вы используете разнесенное развертывание (именно так предполагается разнесенный артефакт)

Это может быть "нормально", но GF ищет файл myEJB.jar, которого там нет. Есть только взорванный артефакт, который затем не будет развернут.

Проблема (как ZipException, так и уже загруженные EJB) была решена путем извлечения интерфейсов EJB за пределами того места, где была определена реализация (классы реализации были загружены с каждым из модулей, отсюда и исключение EJB)

Не уверен, что понимаю, как это излечивает вышеуказанную проблему. Мой класс реализации - это отдельный бин сообщения.

Другие вопросы по тегам