在 ant 脚本中包含外部 JAR 时出错

2024-04-28

这是我第一次尝试编写 ANT 脚本。这是我使用 Spring 构建的简单 Hello World 应用程序的 build.xml。

<project name="MyFirstApp" default="jar" basedir="..">  
    <property name="src" location="src"/>
    <property name="build" location="build"/>
    <property name="lib" location="/WebContent/WEB-INF/lib"/>   
    <path id="classpath-example">   
        <fileset dir="${build}" includes="*.jar"/>
    </path>
    <target name="clean">
        <delete dir="build"/>
    </target>
    <target name="compile">
        <mkdir dir="build/classes"/>
        <javac srcdir="${src}" destdir="build/classes" includeantruntime="false"/>
        <classpath refid="classpath-example"/>
    </target>
    <target name="jar">
        <mkdir dir="build/jar"/>
        <jar destfile="build/jar/MyFirstApp.jar" basedir="build/classes"/>          
    </target>
    <target name="run">
        <java jar="build/jar/MyFirstApp.jar" fork="true"/>
    </target>
</project>

当我尝试运行此命令时,会显示以下错误消息。

问题:无法创建任务或类型类路径 原因:名称未定义。 行动:检查拼写。 操作:检查是否已声明任何自定义任务/类型。 行动:检查是否已进行任何/声明。

有人可以告诉我该怎么办吗?

我第一次运行 ANT 脚本时,生成了 JAR 文件。当我尝试再次运行它时,它给出了下面提到的错误。

干净的: [删除] 删除目录 F:\shil\JAVA\Spring Workspace\myfirstapp1\build

compile:
     [echo] compiling
    [mkdir] Created dir: F:\shil\JAVA\Spring Workspace\myfirstapp1\build\classes

    [javac] Compiling 5 source files to F:\shil\JAVA\Spring Workspace\myfirstapp
1\build\classes
    [javac] F:\shil\JAVA\Spring Workspace\myfirstapp1\src\my\hello\servlet\Hello
WorldServlet.java:4: package javax.servlet does not exist
    [javac] import javax.servlet.ServletException;
    [javac]                     ^
    [javac] F:\shil\JAVA\Spring Workspace\myfirstapp1\src\my\hello\servlet\Hello
WorldServlet.java:5: package javax.servlet.http does not exist
    [javac] import javax.servlet.http.HttpServlet;
    [javac]                          ^
    [javac] F:\shil\JAVA\Spring Workspace\myfirstapp1\src\my\hello\servlet\Hello
WorldServlet.java:6: package javax.servlet.http does not exist
    [javac] import javax.servlet.http.HttpServletRequest;
    [javac]                          ^
    [javac] F:\shil\JAVA\Spring Workspace\myfirstapp1\src\my\hello\servlet\Hello
WorldServlet.java:7: package javax.servlet.http does not exist
    [javac] import javax.servlet.http.HttpServletResponse;
    [javac]                          ^
    [javac] F:\shil\JAVA\Spring Workspace\myfirstapp1\src\my\hello\servlet\Hello
WorldServlet.java:12: cannot find symbol
    [javac] symbol: class HttpServlet
    [javac] public class HelloWorldServlet extends HttpServlet {
    [javac]                                        ^
    [javac] F:\shil\JAVA\Spring Workspace\myfirstapp1\src\my\hello\servlet\Hello
WorldServlet.java:26: cannot find symbol
    [javac] symbol  : class HttpServletRequest
    [javac] location: class my.hello.servlet.HelloWorldServlet
    [javac]     protected void doGet(HttpServletRequest request, HttpServletResp
onse response) throws ServletException, IOException {
    [javac]                          ^
    [javac] F:\shil\JAVA\Spring Workspace\myfirstapp1\src\my\hello\servlet\Hello
WorldServlet.java:26: cannot find symbol
    [javac] symbol  : class HttpServletResponse
    [javac] location: class my.hello.servlet.HelloWorldServlet
    [javac]     protected void doGet(HttpServletRequest request, HttpServletResp
onse response) throws ServletException, IOException {
    [javac]                                                      ^
    [javac] F:\shil\JAVA\Spring Workspace\myfirstapp1\src\my\hello\servlet\Hello
WorldServlet.java:26: cannot find symbol
    [javac] symbol  : class ServletException
    [javac] location: class my.hello.servlet.HelloWorldServlet
    [javac]     protected void doGet(HttpServletRequest request, HttpServletResp
onse response) throws ServletException, IOException {
    [javac]
                      ^
    [javac] F:\shil\JAVA\Spring Workspace\myfirstapp1\src\my\hello\servlet\Hello
WorldServlet.java:33: cannot find symbol
    [javac] symbol  : class HttpServletRequest
    [javac] location: class my.hello.servlet.HelloWorldServlet
    [javac]     protected void doPost(HttpServletRequest request, HttpServletRes
ponse response) throws ServletException, IOException {
    [javac]                           ^
    [javac] F:\shil\JAVA\Spring Workspace\myfirstapp1\src\my\hello\servlet\Hello
WorldServlet.java:33: cannot find symbol
    [javac] symbol  : class HttpServletResponse
    [javac] location: class my.hello.servlet.HelloWorldServlet
    [javac]     protected void doPost(HttpServletRequest request, HttpServletRes
ponse response) throws ServletException, IOException {
    [javac]                                                       ^
    [javac] F:\shil\JAVA\Spring Workspace\myfirstapp1\src\my\hello\servlet\Hello
WorldServlet.java:33: cannot find symbol
    [javac] symbol  : class ServletException
    [javac] location: class my.hello.servlet.HelloWorldServlet
    [javac]     protected void doPost(HttpServletRequest request, HttpServletRes
ponse response) throws ServletException, IOException {
    [javac]
                       ^
    [javac] F:\shil\JAVA\Spring Workspace\myfirstapp1\src\my\hello\servlet\Welco
meServlet.java:4: package javax.servlet does not exist
    [javac] import javax.servlet.RequestDispatcher;
    [javac]                     ^
    [javac] F:\shil\JAVA\Spring Workspace\myfirstapp1\src\my\hello\servlet\Welco
meServlet.java:5: package javax.servlet does not exist
    [javac] import javax.servlet.ServletException;
    [javac]                     ^
    [javac] F:\shil\JAVA\Spring Workspace\myfirstapp1\src\my\hello\servlet\Welco
meServlet.java:6: package javax.servlet.http does not exist
    [javac] import javax.servlet.http.HttpServlet;
    [javac]                          ^
    [javac] F:\shil\JAVA\Spring Workspace\myfirstapp1\src\my\hello\servlet\Welco
meServlet.java:7: package javax.servlet.http does not exist
    [javac] import javax.servlet.http.HttpServletRequest;
    [javac]                          ^
    [javac] F:\shil\JAVA\Spring Workspace\myfirstapp1\src\my\hello\servlet\Welco
meServlet.java:8: package javax.servlet.http does not exist
    [javac] import javax.servlet.http.HttpServletResponse;
    [javac]                          ^
    [javac] F:\shil\JAVA\Spring Workspace\myfirstapp1\src\my\hello\servlet\Welco
meServlet.java:15: cannot find symbol
    [javac] symbol: class HttpServlet
    [javac] public class WelcomeServlet extends HttpServlet {
    [javac]                                     ^
    [javac] F:\shil\JAVA\Spring Workspace\myfirstapp1\src\my\hello\servlet\Welco
meServlet.java:29: cannot find symbol
    [javac] symbol  : class HttpServletRequest
    [javac] location: class my.hello.servlet.WelcomeServlet
    [javac]     protected void doGet(HttpServletRequest request, HttpServletResp
onse response) throws ServletException, IOException {
    [javac]                          ^
    [javac] F:\shil\JAVA\Spring Workspace\myfirstapp1\src\my\hello\servlet\Welco
meServlet.java:29: cannot find symbol
    [javac] symbol  : class HttpServletResponse
    [javac] location: class my.hello.servlet.WelcomeServlet
    [javac]     protected void doGet(HttpServletRequest request, HttpServletResp
onse response) throws ServletException, IOException {
    [javac]                                                      ^
    [javac] F:\shil\JAVA\Spring Workspace\myfirstapp1\src\my\hello\servlet\Welco
meServlet.java:29: cannot find symbol
    [javac] symbol  : class ServletException
    [javac] location: class my.hello.servlet.WelcomeServlet
    [javac]     protected void doGet(HttpServletRequest request, HttpServletResp
onse response) throws ServletException, IOException {
    [javac]
                      ^
    [javac] F:\shil\JAVA\Spring Workspace\myfirstapp1\src\my\hello\servlet\Welco
meServlet.java:36: cannot find symbol
    [javac] symbol  : class HttpServletRequest
    [javac] location: class my.hello.servlet.WelcomeServlet
    [javac]     protected void doPost(HttpServletRequest request, HttpServletRes
ponse response) throws ServletException, IOException {
    [javac]                           ^
    [javac] F:\shil\JAVA\Spring Workspace\myfirstapp1\src\my\hello\servlet\Welco
meServlet.java:36: cannot find symbol
    [javac] symbol  : class HttpServletResponse
    [javac] location: class my.hello.servlet.WelcomeServlet
    [javac]     protected void doPost(HttpServletRequest request, HttpServletRes
ponse response) throws ServletException, IOException {
    [javac]                                                       ^
    [javac] F:\shil\JAVA\Spring Workspace\myfirstapp1\src\my\hello\servlet\Welco
meServlet.java:36: cannot find symbol
    [javac] symbol  : class ServletException
    [javac] location: class my.hello.servlet.WelcomeServlet
    [javac]     protected void doPost(HttpServletRequest request, HttpServletRes
ponse response) throws ServletException, IOException {
    [javac]
                       ^
    [javac] F:\shil\JAVA\Spring Workspace\myfirstapp1\src\my\hello\servlet\Welco
meServlet.java:41: cannot find symbol
    [javac] symbol  : class RequestDispatcher
    [javac] location: class my.hello.servlet.WelcomeServlet
    [javac]             RequestDispatcher welcomeDispatcher = getServletContext(
).getRequestDispatcher("/Welcome.jsp");
    [javac]             ^
    [javac] F:\shil\JAVA\Spring Workspace\myfirstapp1\src\my\hello\servlet\Welco
meServlet.java:41: cannot find symbol
    [javac] symbol  : method getServletContext()
    [javac] location: class my.hello.servlet.WelcomeServlet
    [javac]             RequestDispatcher welcomeDispatcher = getServletContext(
).getRequestDispatcher("/Welcome.jsp");
    [javac]                                                   ^
    [javac] Note: F:\shil\JAVA\Spring Workspace\myfirstapp1\src\my\hello\HelloWo
rldApp.java uses or overrides a deprecated API.
    [javac] Note: Recompile with -Xlint:deprecation for details.
    [javac] 25 errors

BUILD FAILED
F:\shil\JAVA\Spring Workspace\myfirstapp1\ant\build.xml:19: Compile failed; see
the compiler error output for details.

Total time: 1 second

为什么这不是第一次发生?有人可以帮忙吗?


The <classpath>在你的里面compile目标应该嵌套在<javac>元素。

还值得注意的是,ant(实际上是大多数构建系统)的许多功能都来自于声明目标之间的依赖关系。在您的示例中,运行没有任何意义jar无需先运行目标compile目标,否则,没有要 jar 的类文件 - 或者更糟,你将运行jar用手,但忘记跑步compile首先,您的 JAR 文件中会出现过时的类。所以jar目标应取决于compile目标。这样,每当您运行jartarget,任何更改的类都会首先自动编译。同样,run目标应取决于jar target.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 ant 脚本中包含外部 JAR 时出错 的相关文章

  • 读取文件并获取 key=value 而不使用 java.util.Properties

    我正在构建一个 RMI 游戏 客户端将加载一个包含一些键和值的文件 这些键和值将用于多个不同的对象 它是一个保存游戏文件 但我不能为此使用 java util Properties 它符合规范 我必须读取整个文件并忽略注释行和与某些类不相关
  • 如何用Java写入OS系统日志?

    Mac OS 有一个名为 Console 的应用程序 其中包含记录的消息 错误和故障 我相信 Windows 中的等效项是事件查看器 我想 Linux 上也有一个 但我不知道它是什么 也不知道它在哪里 是否可以像这样从 Java 输出获取消
  • 正确配置JDK环境变量后仍然找不到java命令

    我在 Windows 虚拟机启动时安装 JDK 使用 cloudinit 用户数据将 PowerShell 脚本传输到 Windows 计算机 然后运行该脚本来安装 JDK softwares Get ItemProperty HKLM S
  • 如何防止在 CXF Web 服务客户端中生成 JAXBElement

    我正在尝试使用 CXF 创建一个 Web 服务客户端来使用 WCF Web 服务 当我使用 wsdl2java 时 它生成具有 JAXBElement 类型而不是 String 的对象 我读到有关使用 jaxb bindings xml 文
  • Java中定义类型后同时初始化多个变量?

    这里需要一些语法方面的帮助 我正在尝试在定义类型后重新初始化多个变量 例如 int bonus sales x y 50 这工作正常 但是我想稍后在程序中将不同的值放入其中一些变量中 但我收到语法错误 bonus 25 x 38 sales
  • 使用 JAXB 编组 LocalDate

    我正在构建一系列链接类 我希望能够将其实例编组到 XML 以便我可以将它们保存到文件中并稍后再次读取它们 目前我使用以下代码作为测试用例 import javax xml bind annotation import javax xml b
  • 代码编译期间遇到警告消息“使用或覆盖已弃用的 API”

    我编译了我的程序并收到以下错误 我该如何解决呢 Note ClientThreadClients java uses or overrides a deprecated API Note Recompile with Xlint depre
  • 为什么一个线程会中断另一个线程[重复]

    这个问题在这里已经有答案了 在Java多线程应用程序中 我们处理InterruptedThreadException 如果另一个线程中断当前线程 则会抛出此异常 现在 当另一个线程知道它将导致异常时 它可能想要中断当前线程的原因是什么 很多
  • 如何屏蔽 Protobuf 中的某些字段

    我找不到一种方法来屏蔽 protobuf 结构中的某些字段 我确实阅读了有关 FieldMaskUtil 的内容并尝试了几个示例 但它似乎做了相反的操作 即复制 FieldMask 中提到的字段 这与我想要的不同 这是示例结构和相应的测试代
  • Codility 钉板

    尝试了解 Codility NailingPlanks 的解决方案 问题链接 https app codility com programmers lessons 14 binary search algorithm nailing pla
  • 更改 JTextPane 的大小

    我是Java新手 刚刚在StackOverflow中找到了这段代码 ResizeTextArea https stackoverflow com questions 9370561 enabling scroll bars when jte
  • 如何使用 Spring MVC 和 Thymeleaf 添加静态文件

    我的问题是如何添加 CSS 和图像文件等静态文件 以便我可以使用它们 我正在使用 Spring MVC 和 Thymeleaf 我查看了有关此主题的各种帖子 但它们对我没有帮助 所以我才来问 根据这些帖子 我将 CSS 和图像文件放在res
  • 如何在命令提示符中检查 JAVA_OPTS 值?

    我们的应用程序部署 JBoss 服务器然后抛出错误 PermGen space 然后在 jboss bat 和配置文件中设置 permgen 变量中的 java OPTS JAVA OPTs 中是否有值 assige 如何检查 如何在命令提
  • 删除 ArrayList 对象问题

    我在处理作业时遇到从 ArrayList 中删除对象的问题 如果我使用 正常 for 循环 它的工作原理如下 public void returnBook String isbn for int i 0 i lt booksBorrowed
  • 在方法内声明类 - Final 关键字 [重复]

    这个问题在这里已经有答案了 给定方法中的以下内部类 IsSomething public class InnerMethod private int x public class Something private int y public
  • JPA - 非主键字段上的 @OneToOne 关系不起作用

    我有一个 Spring Data JPA 后端 使用 Hibernate 作为 ORM 实现 这是模型 Person MailConfig id PK uid PK FK Person uid uid Entity
  • BoneCP 和 Derby - 如何正确关闭

    I have BoneCP CONNECTION POOL CONNECTION POOL getConfig setJdbcUrl jdbc derby database shutdown true Connection connecti
  • Java中的媒体播放器库[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在评估用于在 Java 中播放音频 视频的库 它不需要 100 Java Java 与本机库的绑定
  • 当我在 Java 中输入 IP 时无法连接到我的服务器

    好的 我正在尝试学习 Java 客户端 服务器的内容 并且正在浏览教程代码 如下所示 当我将 localhost 更改为我的 IP 时 它会停止工作 请帮忙 编辑 127 0 0 1 似乎也可以工作 但不是我的真实IP Copyright
  • 在多线程环境中,Collections.sort 方法有时会抛出 ConcurrentModificationException。列表没有进行结构性修改

    package CollectionsTS import java util ArrayList import java util Collections import java util HashSet import java util

随机推荐