代码之家  ›  专栏  ›  技术社区  ›  Community wiki

我需要帮助弄清楚Ant为什么会给我这个错误消息(设置Java宠物商店)?

  •  0
  • Community wiki  · 技术社区  · 1 年前

    我不知道ContainerBaCommand是从哪里来的,但我的错误是:

    首先,我不得不将javax.jar(它有servlet)类添加到C:\JEE6SDKglassfish3\glassfish\lib\approved目录中,这给了我一个新的错误,如下所示:

    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 回复  |  直到 13 年前
        1
  •  3
  •   Mark McLaren    13 年前

    我认为“ ContainerBaCommand “实际上 ContainerBase.addChild ( these guys had a similar problem )。我认为有时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(它有servlet类)复制到lib中。Servlet(以及Servlet上下文侦听器)对于应用程序服务器来说是非常重要的类。我希望它们已经存在于Glassfish类路径中(在Glassfish 3.1中,它们位于 ~glassfish/modules/javax.servlet.jar )。我怀疑正在将您的javax.jar复制到“ lib/背书 “造成的问题比解决的问题还多。

    我希望这能有所帮助。