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に送信...
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バージョンによって設定された規則に従ってディレクトリを作成するのが最もクリーンなソリューションです。
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
ANT_HOMEは「/ usr/bin/ant」で設定する必要があると思います。その構成があります(CENTOS 5)。
「/etc/profile.d」の下にある私のshスクリプトには、この設定があります。
export Java_HOME="/usr/local/Java";
export ANT_HOME="/usr/local/ant";
それがあなたのお役に立てば幸いです。
私は同様の問題を抱えていましたが、次のように修正されました:
Sudo yum install xml-commons-apis
今日、同じエラーメッセージが表示されましたが、別の原因でトリガーされました。
私の場合、OpenJDK 1.8.0に更新した後、antを実行できなくなりました。
問題は、Java -fullversion
コマンドの出力がわずかに変更され、/usr/share/Java-utils/Java-functions
がそれを正しく理解しなくなったという事実にありました。
jpackage-utils
RPMの最新バージョンにアップグレードすると解決しました。
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を指すソフトリンクの束のみが含まれているため、次の手順を実行しました。
jdk1.6.0_32
)# cp -av Java-1.6.0-openjdk-1.6.0.0.x86_64/* jdk1.6.0_32/
# 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バージョン)。それは私の問題を解決し、上記の原因を除いて別の原因になる可能性があります。
xerces-j2-xml-apis
をインストールしてみてください
私の場合、ANT_HOME
変数、ただし/bin/
はシステムパスで使用するために追加されます-このホーム変数はバイナリディレクトリであってはなりません。anthimeの設定、およびenvディレクトリへのバイナリディレクトリの追加には以下を使用してください。
export ANT_HOME=/opt/Apache-ant-1.9.4
export PATH=$ANT_HOME/bin:$PATH
OS Xでもまったく同じエラーメッセージが表示されていましたが、誰かがANT_HOMEを設定解除することを提案しましたが、それは機能していました。 https://github.com/Homebrew/homebrew/issues/32851
Suse 11でも同じ問題がありました。Hidayathの答え https://stackoverflow.com/a/4849302/12119 それを解決しました。すぐに使用できるパッケージリポジトリを想定:me @ sles:〜> Sudo zypper install xerces-j2-xml-apis
私の場合、「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コマンドは正常に動作し始めました。