【问题标题】:Ant Javac and Commandline Javac give different resultsAnt Javac 和 Commandline Javac 给出不同的结果
【发布时间】:2011-08-03 08:03:45
【问题描述】:

我有一个导入一些 servlet 库的类。当我从命令行编译它时很好。

当我使用 ant compile 任务编译它时,它给出了在其路径中找不到 servlet 库的错误。

这是已知/常见的情况吗?

这是我的 Ant 目标:

<target name="compile" depends="prepare" description="compile the source" >
    <echo>=== COMPILE === SRCDIR: ${src}/com/udfr/src/java </echo> <!-- Compile the java code from ${src} into ${build} -->
    <javac srcdir="${src}/com/udfr/src/java" destdir="${dist}/WEB-INF/classes"/>
</target>

【问题讨论】:

  • 请添加一些代码,这个问题似乎很模糊

标签: java servlets ant javac


【解决方案1】:

如果您没有在 javac 任务的类路径中正确指定 servlet 库,这是很常见的情况......我怀疑这就是问题所在。如果您发布失败的任务和有效的命令行,我们将能够提供更多帮助。

【讨论】:

  • 这里是 ant 任务:=== COMPILE === SRCDIR: ${src} /com/udfr/src/java
  • @Genadinik:基本上,您根本没有指定类路径
【解决方案2】:

由于某种原因,当您在命令行中编译程序时,包含 Servlet API 的 JAR 文件是类路径的一部分。但是,它不在javac Ant 任务的类路径中。

您应该明确地将 JAR 文件添加到 javac Ant 任务中的类路径中。有几种方法可以做到这一点;请阅读http://ant.apache.org/manual/Tasks/javac.html

【讨论】:

  • 其实有趣的是我的CLASSPATH已经设置好了。我的意思是,Javac 有效。只是不是来自我在乔恩回答后发布的蚂蚁任务。
  • @Genadinik 我很确定CLASSPATH 环境变量被javac Ant 任务忽略了,所以这可以解释为什么命令行有效而Ant 任务无效。请尝试在javac Ant 任务上指定classpath 属性。
  • 我不确定——我的猜测是 CLASSPATH 是为特定进程设置的,而运行 ANT(例如 Eclipse)的进程不知道 CLASSPATH。尝试在 Javac 任务本身中设置类路径。
  • 是的,很有趣,添加这个有效:classpath="/usr/local/tomcat/lib/*:/usr/local/jdk1.6.0_24/jre/lib/ext/servlet.jar"但是仅添加以下内容并没有: classpath="/usr/local/tomcat/lib/*" - 知道为什么更优雅的解决方案在这里不起作用吗?
  • @Genadinik 你应该阅读 Ant 中的路径结构:ant.apache.org/manual/using.html#path
猜你喜欢
  • 2012-07-15
  • 2017-07-05
  • 2013-07-03
  • 2010-10-22
  • 1970-01-01
  • 2012-06-02
  • 1970-01-01
  • 2011-05-07
  • 2014-03-08
相关资源
最近更新 更多