1

JSP/servlet 是我想学习的东西,所以我着手创建我的第一个 tomcat 应用程序。

我已经完成了这里的 apache 教程,并继续尝试在 tomcat 中安装我的应用程序(具有适当 dir 结构的简单测试 html 文件)。现在,我意识到希望使用教程提供的库存build.xml是非常一厢情愿的想法,但我需要从某个地方开始,我还不确定如何自己编写一个。我已经寻找示例,但它们似乎没有“安装”目标,也许它们不是 Web 应用程序。

我的项目构建,但没有通过 ant 安装到 tomcat 上。当我尝试“安装”我的控制台输出时......

 ant install
Buildfile: /home/mark/svn/tomcatapp/build.xml
Trying to override old definition of datatype resources

prepare:

compile:
    [javac] /home/mark/svn/tomcatapp/build.xml:299: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds

install:

BUILD FAILED
/home/mark/svn/tomcatapp/build.xml:375: java.lang.NoClassDefFoundError: org/apache/tomcat/util/buf/B2CConverter
    at org.apache.catalina.util.Base64.encode(Base64.java:173)
    at org.apache.catalina.ant.AbstractCatalinaTask.execute(AbstractCatalinaTask.java:204)
    at org.apache.catalina.ant.DeployTask.execute(DeployTask.java:211)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
    at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.Target.execute(Target.java:392)
    at org.apache.tools.ant.Target.performTasks(Target.java:413)
    at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399)
    at org.apache.tools.ant.Project.executeTarget(Project.java:1368)
    at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
    at org.apache.tools.ant.Project.executeTargets(Project.java:1251)
    at org.apache.tools.ant.Main.runBuild(Main.java:811)
    at org.apache.tools.ant.Main.startAnt(Main.java:217)
    at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
    at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)
Caused by: java.lang.ClassNotFoundException: org.apache.tomcat.util.buf.B2CConverter
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
    ... 19 more

Total time: 0 seconds

为什么找不到一个类,它不会包含在 tomcat 安装中吗?有一个类似的问题,但我没有尝试使用管理器应用程序,而且我不确定如何编辑类路径 - 我需要编译一个 .java 类来为项目创建一个吗?

我确信一个更简单的构建文件就足够了,但我不确定哪些组件是相关的。对于可能非常愚蠢的问题,我们深表歉意。

这是我的 build.xml 文件中的安装目标。

  <target name="install" depends="compile"
   description="Install application to servlet container">

    <deploy url="${manager.url}"
       username="${manager.username}"
       password="${manager.password}"
           path="${app.path}"
       localWar="file://${build.home}"/>

  </target>
4

4 回答 4

1

如果您使用的是示例 build.xml ,请更改

localWar="file://${build.home}"

war="${dist.home}/${app.name}-${app.version}.war"

如果你在 ANT_HOME/lib 中有 catalina-ant.jar。尝试从该位置删除它。

重启tomcat。

这对我有用。

于 2012-09-16T11:55:02.587 回答
1

简短的回答:

  • 将文件 tomcat-util.jar 从复制CATALINA_HOME/libANT_HOME/lib
  • 发出 ant 命令时,添加-lib带有该文件路径的选项,例如
    ant -lib C:\Tomcat8\lib\tomcat-util.jar install
    (提供CATALINA_HOME指向C:\Tomcat8

解释:

我在 Tomcat 8.0.36 上遇到过类似的问题。根据错误信息org.apache.tomcat.util.codec.binary.Base64找不到类。教程中的ant install命令执行部署任务,这不是 Ant 中的标准任务,而是 Tomcat 提供的自定义任务。部署任务由DeployTask类(类全称org.apache.catalina.ant.DeployTask)实现,放在CATALINA_HOME/lib/catalina-ant.jar. 自定义任务(如DeployTask)通常依赖于外部库,因此您需要将这些库添加到 Ant 的类路径中。有关更多信息,请参阅Ant 中的可选任务

于 2016-08-09T18:35:11.980 回答
0

我也在运行新版本的 Tomcat (7.0.32) 并在尝试遵循教程时遇到了同样的错误。我知道这不是最好的解决方案,但也许它对您的调试会有所帮助:当我使用该-lib选项时,ant我能够使其包含所需类的 jar 文件:( ant -lib /usr/local/apache-tomcat-7.0.32/lib/ -lib /usr/local/apache-tomcat-7.0.32/bin/ install在我的情况下/usr/local/apache-tomcat-7.0.32$CATALINA_HOME

于 2012-10-25T20:17:26.150 回答
0

您已点击https://issues.apache.org/bugzilla/show_bug.cgi?id=52148

升级到最新的 Tomcat 7 版本,问题就会消失。

于 2012-08-05T19:27:48.873 回答