1

最近 Linux Mint 15 に切り替えましたが、Eclipse と ant に問題があります。これは、問題を引き起こしている ant スクリプトの一部です。

                <exec osfamily="unix" executable="wsimport">
                    <arg line="${prefix}/${jaxb.resources}/${jaxb.schema@{i}} -s ${prefix}/${jaxb.src} -p ${jaxb.package@{i}} -wsdllocation ${jaxb.schema@{i}} -b ${prefix}/jaxb-bindings.xml -Xdebug -verbose -Xnocompile" />
                </exec>

ただし、ビルド中に Eclipse で ant を使用すると、次のエラーが発生します。

Execute failed: java.io.IOException: Cannot run program "wsimport": error=2, No such file or directory

これは、Eclipse が JDK の一部である wsimport ツールを見つけられないことが原因であることを理解しています。ただし、ターミナル内でこの ant スクリプトを実行すると、すべてが正しく通過します。私の .bashrc には PATH 変数が jdk/bin フォルダーに設定されており、ターミナルから wsimport にアクセスできます。Eclipse は私のマシンにインストールされている ant バージョン (埋め込まれたものではない) を使用し、プロジェクトは JDK コンパイラ (埋め込まれていない) を使用してビルドされます。Oracle の JDK 1.7.0_45 64 ビットを使用しています。

前もって感謝します。

編集:

/usr/lib/jvm/jdk に JDK を (パッケージ インストーラーではなく) 手動でインストールしました。update-alternatives を使用して構成し、ユーザーの .bashrc に JAVA_HOME および PATH 変数を設定しました。私が言ったように、ant スクリプトは端末からは機能しますが、Eclipse からは機能しません (ant ウィンドウ上) 多分 eclipse は .bashrc の PATH 変数を認識していません...

4

1 に答える 1

2

(これは古い質問ですが、これは将来他の人に役立つかもしれません。) Ant タスクで wsgen と wsimport を実行できます。私はあなたのすべての変数に精通しているわけではないので、私の例は独自のことをしています。変数が必要です:

  • Metro.home - webservices-tools.jar の場所
  • build.classpath - 依存する jar ファイルのクラスパス
  • build.classes - @WebService クラスのクラスパス
  • basedir - wsgen および wsimport ファイルを書き込んでいる場所

これが例です。

<!-- setup Metro tooltime classpath -->
<path id="tool.cp">
    <path refid="runtime.cp"/>
    <pathelement location="${metro.home}/webservices-tools.jar"/>
</path>

<!--
    Setup Wsimport ant task. You would use this task in WSDL to Java case
    to compile a WSDL and generate Java classes.
-->
<taskdef name="wsimport" classname="com.sun.tools.ws.ant.WsImport">
    <classpath refid="tool.cp"/>
</taskdef>

<!--
    Setup Wsgen ant task. You would use this task in Java to WSDL case to
    generate a WSDL or wrapper classes.
-->
<taskdef name="wsgen" classname="com.sun.tools.ws.ant.WsGen">
    <classpath refid="tool.cp"/>
    <classpath refid="build.classpath"/>
</taskdef>

<target name="wsimport">
    <wsgen sei="com.company.app.ws.Authorize"
        classpath="${build.classes}"
        sourcedestdir="${basedir}/wsgen/src"
        destdir="${basedir}/wsgen/classes"
        keep="true" verbose="true" genwsdl="true" resourcedestdir="wsgen">
        <classpath refid="build.classpath"/>
    </wsgen>
    <wsimport verbose="true" keep="true"
        destdir="${basedir}/wsimport/classes"
        sourcedestdir="${basedir}/wsimport/src"
        wsdl="${basedir}/wsgen/AuthorizeService.wsdl"
    />
</target>

注: これは、RedHat で実行されている Jenkins から Ant スクリプトを起動するときにも機能します。

注: Eclipse で外部ツールを使用して Ant を実行しようとする場合、External Tools Configuration で JRE に「jre7」などの JRE を選択すると、問題が発生する可能性があります。「jdk1.7.0_80」などのJDKを構成して使用することをお勧めします。また、「tools.jar」を外部ツール構成に追加のクラスパス エントリとして追加します。

于 2016-02-19T21:49:27.697 に答える