4

EclipseのANTエディターで「参照build.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>
4

2 に答える 2

1

エディターはAntが指定するrefidやその他の要素を認識できるので、エディターはAntのビルドファイル解析プロセスと同様のことを行うと思います。

つまり、このantビルドファイルをProjectオブジェクトに解析すると、の参照がチェックされる<taskdef>場合とチェックされない場合があります<javac>

build.classpathは実行時に設定され、のようなもの以外によって設定される<classpath>ため、Eclipseはそれを検出しない場合があります。

私はこれについて強い証拠を持っていません。しかし、私たちにもっと知ってもらうために何かをすることができます。

  • まず、警告が存在する<javac>のと同じターゲットにを コピーして、が警告を受け取るかどうかを確認します。<taskdef><javac>

  • 次に、<taskdef>presetdefed <javac>が存在する同じターゲットにをコピーして、<taskdef>まだ警告が表示されるかどうかを確認します。

  • 第三に、ターゲットの「生成」で、パーツをコメントアウトし、呼び出しに警告が表示さ<taskdef>れるかどうかを確認します。<xjc ... />

最初の1つは「いいえ」を期待し、他の2つは「はい」を期待します。そうでなければ、私の推測は間違っています。

そして、それは単なる警告であることは理にかなっています。Eclipseが編集時に見つけられないものは、実行時に存在する可能性があります。

于 2013-03-13T10:18:16.927 に答える
0

次のように、パス要素の場所が正しく指定されていることを確認してください。

<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があります

詳細については、以下のリンクを確認してください。
ここをクリックしてください

于 2013-03-13T08:43:05.780 に答える