Мне нужна помощь, чтобы выяснить, почему Ant выдает мне эти сообщения об ошибках (настройка Java Pet Store)? - PullRequest
0 голосов
/ 09 сентября 2011

Я понятия не имею, откуда исходит ContainerBaCommand, но вот моя ошибка:

Сначала мне нужно было добавить класс javax.jar (который имеет сервлет) в C: \ JEE6SDKglassfish3 \ glassfish \ lib \одобрил каталог, и он дал мне новую ошибку, здесь:

Buildfile: C:\petstore~svn\trunk\ws\apps\petstore\build.xml

check:

tools:

-pre-deploy:

deploy:
     [exec] Deprecated syntax, instead use:
     [exec] asadmin --user admin --passwordfile c:/JEE6SDKglassfish3/glassfish/samples/bp-project/passwordfile --host localhost --port 4848 deploy [options] ...

     [exec] remote failure: Error occurred during deployment: Exception while loading the app : java.lang.IllegalStateException: ContainerBaCommand deploy failed.
     [exec] se.addChild: start: org.apache.catalina.LifecycleException: java.lang.IllegalArgumentException: java.lang.NoClassDefFoundError: javax/servlet/ServletContextListener. Please see server.log for more details.

BUILD FAILED
C:\petstore~svn\trunk\ws\bp-project\app-server-ant.xml:382: exec returned: 1

Total time: 47 seconds

Все файлы в папке установки: http://tinyurl.com/3gbb6o4

Редактировать: Большое спасибо, Марк!

1 Ответ

3 голосов
/ 13 сентября 2011

Я думаю, что " ContainerBaCommand " на самом деле ContainerBase.addChild ( у этих парней была похожая проблема ). Я думаю, что иногда стандартный вывод Java и стандартные ошибки смешиваются на консоли.

Я предполагаю, что вы используете что-то вроде этого app-server-ant.xml . Похоже, ошибка Ant указывает на то, что синтаксис, который теперь используется asadmin , используется для развертывания приложения. Поэтому я думаю, что вам нужно переписать вашу задачу развертывания из того, что она есть на данный момент:

<exec executable="${asadmin}" failonerror="${failonerror}">
  <arg line=" deploy "/>
  <arg line=" --user ${javaee.server.username}" />
  <arg line=" --passwordfile ${javaee.server.passwordfile}" />
  <arg line=" --host ${javaee.adminserver.name}" />
  <arg line=" --port ${javaee.adminserver.port}" />
  <arg line=" --name ${module.name}"/>
  <arg line=" --force=true "/>
  <arg line=" --upload=true "/>
  <arg line=" --precompilejsp "/>
  <arg line=" --dbvendorname ${db.vendorname}"/>
  <arg line="${app.module}" />
</exec>

до:

<exec executable="${asadmin}" failonerror="${failonerror}">
  <arg line=" --user ${javaee.server.username}" />
  <arg line=" --passwordfile ${javaee.server.passwordfile}" />
  <arg line=" --host ${javaee.adminserver.name}" />
  <arg line=" --port ${javaee.adminserver.port}" />
  <arg line=" deploy "/>
  <arg line=" --force=true "/>
  <arg line=" --precompilejsp "/>
  <arg line=" --name ${module.name}"/>
  <arg line=" --upload=true "/>
  <arg line=" --dbvendorname ${db.vendorname}"/>
  <arg line="${app.module}" />
</exec>

Я удивлен, что вам нужно было скопировать javax.jar (с классом сервлета) в lib. Servlet (и ServletContextListener в этом отношении) являются очень важными классами для сервера приложений. Я ожидаю, что они уже существуют в пути класса Glassfish (в Glassfish 3.1 они находятся в ~ glassfish / modules / javax.servlet.jar ). Я подозреваю, что копирование вашего javax.jar в " lib / endorsed " вызывает больше проблем, чем решит.

Надеюсь, это поможет.

...