为什么Eclipse蚂蚁编辑器警告我



我在Eclipse中使用ANT编辑器时遇到了一些麻烦(真的很烦恼),它向我显示警告"参考构建"。找不到类路径。放到下面的代码块上:

<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>中的引用可能不会被检查。

自构建以来。classpath是在运行时设置的,它是由<classpath>以外的东西设置的,Eclipse可能找不到它。

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

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

  • 然后,将<taskdef>复制到预设的相同目标<javac>是否存在,看看<taskdef>是否仍然得到警告;

  • 第三,在目标"generate"中,注释掉<taskdef>部分,并且检查<xjc ... />呼叫是否收到警告

对于第一个,我期望"NO",而对于其他两个,我期望"YES"。否则,我猜错了。

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

确保你已经给出了正确的路径元素位置,如下图所示。

<property name="dependencyfinder.home" value="C:/DependencyFinder"/>
<path id="dependencyfinder">
    <pathelement location="${dependencyfinder.home}/lib/aaa.jar"/> 
</path>

<taskdef classname="com.sun.tools.xjc.XJCTask">
    <classpath refid="dependencyfinder"/>
</taskdef>

注意:DependencyFinder有一个lib文件夹,lib文件夹有aaa.jar

请查看下面的链接以获取更多信息
点击这里

相关内容

  • 没有找到相关文章

最新更新