java - 为什么 Eclipse Ant 编辑器会警告我

标签 java eclipse ant

我在使用 Eclipse 中的 ANT 编辑器时遇到了一些麻烦(真的很烦人),它在以下 block 上向我显示警告“未找到引用构建.classpath。”:

<target name="generate" depends="..., mvn-depends">
    <taskdef name="xjc" classname="com.sun.tools.xjc.XJCTask">
        <classpath refid="build.classpath" />
    </taskdef>
    ...
</target>

mvn-depends 目标如下所示:

<target name="mvn-depends">
    <artifact:dependencies pathId="build.classpath">
        <pom refid="my.pom" />
    </artifact:dependencies>
</target>

构建文件中对 build.classpath 的其余引用没有抛出任何警告,并且构建运行正常,没有任何错误,因此看起来并没有太多意义。

不过,每次我必须编辑该文件时,忽略警告会让我感到有点不自在。具体来说,不知道这是 Eclipse Ant 构建文件验证代码中的错误,还是 Eclipse 已识别的构建文件结构方式中的潜在问题。

如果有人对显示此警告的原因以及忽略甚至禁用首选项是否安全并且愿意分享这些知识有任何想法,我将不胜感激。

编辑:

根据要求,这是一个引用 build.classpath 的示例,它不会导致任何警告:

<javac deprecation="off" debug="on" source="1.7" target="1.7" encoding="UTF-8"
       includeantruntime="false" memoryMaximumSize="512M" fork="true">
    <classpath refid="build.classpath" />
</javac>

最佳答案

由于编辑器可以识别Ant指定的refids和其他元素,我猜编辑器做了一些类似于Ant的构建文件解析过程。

也就是说,将这个ant构建文件解析成一个Project对象,以及 <taskdef> 中的引用可以检查,而 <javac>可能不会。

因为 build.classpath 是在运行时设置的,而且它是由不同于 <classpath> 之类的东西设置的, Eclipse 可能找不到它。

我没有强有力的证据证明这一点。但是可以做一些事情让我们了解更多。

  • 首先,复制 <javac>到警告的同一目标 <taskdef>存在,看看是否<javac>收到警告;

  • 然后,复制 <taskdef>到 presetdefed 的同一目标 <javac>存在,看看是否<taskdef>仍然收到警告;

  • 第三,在目标“生成”中,注释掉<taskdef>部分,和 检查 <xjc ... />调用会收到警告。

对于第一个,我期望“否”,而对于其他两个,我期望"is"。否则,我的猜测是错误的。

这只是一个警告是有道理的——Eclipse 在编辑时找不到的东西在运行时可能存在。

关于java - 为什么 Eclipse Ant 编辑器会警告我,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15380269/

相关文章:

java - 如何使 Main 类实例的范围存在于整个类中

java - 为 Android 的 Amazon AWS SES 发送带有附件的电子邮件?

ant - Ant 脚本中的 FileSet 有问题吗?

java - 什么是 [Android] Java 的 VB.NET 静态关键字?

javascript - 通过 GWT 中的框架从 javascript 调用 JSNI Java 函数 - $wnd 是未定义错误

java - org.eclipse.ui.PlatformUI 类在哪里?

java - 渲染时出现异常 : com. android.layoutlib.bridge.MockView cannot be cast to android.view.ViewGroup

java - 使用 Jetty : URI is too large >8192 增加限制

java - 发布构建 jnativehook

java - Ant 构建失败,错误为 "SAXParseException: Open quote is expected for attribute"