web-dev-qa-db-ja.com

私のant構成の何が問題になっていますか?

Yumを使用してFedora 5マシンにAntをインストールしましたが、Antが起動しません。このエラーメッセージが表示されます。

[bash]# ant
Exception in thread "main" Java.lang.NoClassDefFoundError: org/Apache/tools/ant/launch/Launcher
Caused by: Java.lang.ClassNotFoundException: org.Apache.tools.ant.launch.Launcher
    at Java.net.URLClassLoader$1.run(URLClassLoader.Java:202)
    at Java.security.AccessController.doPrivileged(Native Method)
    at Java.net.URLClassLoader.findClass(URLClassLoader.Java:190)
    at Java.lang.ClassLoader.loadClass(ClassLoader.Java:307)
    at Sun.misc.Launcher$AppClassLoader.loadClass(Launcher.Java:301)
    at Java.lang.ClassLoader.loadClass(ClassLoader.Java:248)
Could not find the main class: org.Apache.tools.ant.launch.Launcher.  Program will exit.

次の環境変数を設定しました。

Java_HOME = /usr/Java/latest
ANT_HOME = /usr/bin

Antは/usr/bin/antにインストールされます。

私も この投稿 に出会いましたが、JAVAVER_LIBDIR変数は存在するものを指していないようです。投稿が著者のために問題を解決したようにシンボリックリンクを設定しましたが、それは私のために物事を修正しませんでした。

[bash]# Sudo ln -s /usr/share/Java /usr/share/Java-1.6.0

編集:JAVAVER_JNIDIR変数に関する同様の問題に対処するシンボリックリンクも設定しました。

[bash]# Sudo ln -s /usr/lib/Java /usr/lib/Java-1.6.0

別のエラーメッセージが表示されるようになりました。

[bash]# ant --execdebug
/usr/bin/build-classpath: error: Could not find jaxp_parser_impl Java extension for this JVM
/usr/bin/build-classpath: error: Could not find xml-commons-apis Java extension for this JVM
/usr/bin/build-classpath: error: Some specified jars were not found
exec "/usr/Java/latest/bin/Java" -classpath "/usr/share/Java-1.6.0/ant.jar:/usr/share/Java-1.6.0/ant-launcher.jar:/usr/Java/latest/lib/tools.jar" -Dant.home="/usr" -Dant.library.dir="/usr/lib" org.Apache.tools.ant.launch.Launcher -cp ""
Buildfile: build.xml does not exist!
Build failed

これらのエラーメッセージをGoogleに送信...

30
Scottie T

Fedora 18でも同様の問題に遭遇しました。

長い話を短くするには、次を実行します:

Sudo mkdir /usr/lib/Java-1.7.0 /usr/share/Java-1.7.0

明らかに、この問題はJava-1.7.0-openjdkに固有のものです。これは、他のすべてのJDKバージョンに類似したemptyディレクトリが存在したためです。


[〜#〜] details [〜#〜]

antの実行後に単一行エラーが発生しました:

Error: Could not find or load main class org.Apache.tools.ant.launch.Launcher

問題は/usr/share/Java-utils/Java-functionsスクリプトのどこかにあり、JAVAVER_JNIDIR/JAVAVER_LIBDIR変数を設定して上記のディレクトリを参照しようとしました。不適切なエラーメッセージがstdoutにリダイレクトされるため、一部の変数には次のような割り当てがあります。

LOCALCLASSPATH='/usr/bin/build-classpath: error: JAVAVER_JNIDIR /usr/lib/Java-1.7.0 does not exist or is not a directory'

他のすべてのJavaバージョンによって設定された規則に従ってディレクトリを作成するのが最もクリーンなソリューションです。

26
uvsmtid
Sudo mkdir /usr/lib/Java-1.7.0 /usr/share/Java-1.7.0

Tarファイルをダウンロードして/ optに配置することにより、Sun Java 1.7.xをインストールしました。yumをインストールしなかったため、これらのディレクトリは作成されませんでした。Java_HOMEは次のように設定されます。

$ echo $Java_HOME/
/opt/jdk1.7.0_03/

他の誰かが言ったように、次を実行すると非常に便利なデバッグが提供されました。

ant --execdebug
13
user2232387

ANT_HOMEは「/ usr/bin/ant」で設定する必要があると思います。その構成があります(CENTOS 5)。

「/etc/profile.d」の下にある私のshスクリプトには、この設定があります。

export Java_HOME="/usr/local/Java";
export ANT_HOME="/usr/local/ant";

それがあなたのお役に立てば幸いです。

11
Aito

私は同様の問題を抱えていましたが、次のように修正されました:

Sudo yum install xml-commons-apis
6
dkinzer

今日、同じエラーメッセージが表示されましたが、別の原因でトリガーされました。

私の場合、OpenJDK 1.8.0に更新した後、antを実行できなくなりました。

問題は、Java -fullversionコマンドの出力がわずかに変更され、/usr/share/Java-utils/Java-functionsがそれを正しく理解しなくなったという事実にありました。

jpackage-utils RPMの最新バージョンにアップグレードすると解決しました。

4
harmic

Fedora 16ではこのような問題が発生しましたが、私の場合はxercesパッケージとxml-commons-apis大丈夫だった。実際、--execdebugは非常に有用であり、antが/usr/lib/jvm-exports/YOUR_JDK。これは、openjdkからOracleのjdkおよびjdkの以前のバージョンのディレクトリ(/usr/lib/jvm-exports/Java-1.6.0-openjdk-1.6.0.0)そこを離れましたが、現在のバージョンのものはありませんでした(/usr/lib/jvm-exports/jdk1.6.0_32)。これらのディレクトリには、特定のjreのjarを指すソフトリンクの束のみが含まれているため、次の手順を実行しました。

  1. 現在のバージョンのjdk(jdk1.6.0_32
  2. openjdkのディレクトリからすべてのリンクを新しいディレクトリにコピーします
    # cp -av Java-1.6.0-openjdk-1.6.0.0.x86_64/* jdk1.6.0_32/
  3. oracleのjarを指すようにすべてを修正します。例:
    # cd /usr/lib/jvm-exports/jdk1.6.0_32
    # ln -s -f $Java_HOME/jre/lib/rt.jar jaas-1.6.0.0.jar

明らかに、$Java_HOMEが正しく設定されています(新しいjdkバージョン)。それは私の問題を解決し、上記の原因を除いて別の原因になる可能性があります。

3
Maciej Bielski

xerces-j2-xml-apisをインストールしてみてください

2
Hidayath

私の場合、ANT_HOME変数、ただし/bin/はシステムパスで使用するために追加されます-このホーム変数はバイナリディレクトリであってはなりません。anthimeの設定、およびenvディレクトリへのバイナリディレクトリの追加には以下を使用してください。

export ANT_HOME=/opt/Apache-ant-1.9.4
export PATH=$ANT_HOME/bin:$PATH
2
Matt Clark

OS Xでもまったく同じエラーメッセージが表示されていましたが、誰かがANT_HOMEを設定解除することを提案しましたが、それは機能していました。 https://github.com/Homebrew/homebrew/issues/32851

1
AndyB

Suse 11でも同じ問題がありました。Hidayathの答え https://stackoverflow.com/a/4849302/12119 それを解決しました。すぐに使用できるパッケージリポジトリを想定:me @ sles:〜> Sudo zypper install xerces-j2-xml-apis

1
Jason Stirnaman

私の場合、「lib」フォルダーには、

ant-launcher.jar

下だった

/usr/local/Cellar/ant/1.9.6/libexec/ 

Libフォルダを下にコピーしました

/usr/local/Cellar/ant/1.9.6/

「ant --execdebug」を実行した後、antコマンドが「1.9.6」フォルダーの下の「lib」フォルダーを探していることがわかったためです。

変更後、antコマンドは正常に動作し始めました。

0
Jlearner