4

Fedora 17 を使用しています。Java 7 と互換性のない ant ビルド ファイルを使用してプロジェクトをコンパイルしようとしています。そのため、OpenJDK 6 をインストールすることにしました。JDK 6 は残念ながら yum リポジトリから削除されています。手動で簡単にインストールできます。JAVA_HOME 変数がなく、代わりに代替システムが使用されていることを知りました。alternatives --installそのため、OpenJDK バイナリを (必要に応じて OSG から) ダウンロードし、コマンドを使用して java & javac & javaws をインストールしました。チェックして、それが成功したことjava --versionjavac --version証明しました。しかし、奇妙なことが起こったのは、ant が機能しなくなったということです。入力するant --execdebugと、次のメッセージが表示されます。

exec "/usr/lib/jvm/openjdk-6.0.24/bin/java" -classpath "/usr/bin/build-classpath: 
error: JVM_LIBDIR /usr/lib/jvm-exports/openjdk-6.0.24 does not exist or is not a 
directory:/usr/bin/build-classpath: error: JVM_LIBDIR /usr/lib/jvm-exports/openjdk-6.0.24 
does not exist or is not a directory:/usr/lib/jvm/openjdk-6.0.24/lib/tools.jar"
-Dant.home="/usr/share/ant" -Dant.library.dir="/usr/share/ant/lib" 
org.apache.tools.ant.launch.Launcher -cp ""
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:217)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: org.apache.tools.ant.launch.Launcher. Program will exit.

Java の場合と同様に、ANT_HOME 変数もありません。しかし、正常に動作している間にJava 6をインストールする前でさえ、ANT_HOMEはありませんでした。Ant は、既に PATH にある /usr/bin/ant の下にインストールされます。

更新:同様の質問qustion 1question 2があることを知っています。しかし、どちらも私の問題を解決しませんでした。たとえば、ANT_HOME=/usr/bin を追加すると、JDK 7 でも ant が機能しないという状況が悪化します。代替システムに慣れていないため、Java 関連の代替を完全に削除し、JAVA_HOME を追加し、代わりに PATH を変更しました。繰り返しますが、java と javac は正常に動作し、java --version は正しいバージョンを返しますが、ant は同じエラーを返します。が示す--execdebugように、JVM_LIBDIR は正しい場所を指していません。値は java.conf ファイルに設定されていると思われるので、ここに貼り付けます (/usr/lib/jvm に JDK 6 & 7 をインストールしました)。

# System-wide Java configuration file                                -*- sh -*-
#
# JPackage Project <http://www.jpackage.org/>

# Location of jar files on the system
JAVA_LIBDIR=/usr/share/java

# Location of arch-specific jar files on the system
JNI_LIBDIR=/usr/lib64/java

# Location for noarch jar files using arch-specifics jar files
JAVAJNI_LIBDIR=/usr/share/java-jni

# Root of all JVM installations
JVM_ROOT=/usr/lib/jvm

# You can define a system-wide JVM root here if you're not using the
# default one.
#
# If you have the a base JRE package installed
# (e.g. java-1.6.0-openjdk):
#JAVA_HOME=$JVM_ROOT/jre
#
# If you have the a devel JDK package installed
# (e.g. java-1.6.0-openjdk-devel):
#JAVA_HOME=$JVM_ROOT/java-1.7.0-openjdk-1.7.0.9.x86_64
JAVA_HOME=$JVM_ROOT/openjdk-6.0.24

# Options to pass to the java interpreter
JAVACMD_OPTS=

java.conf の対応する行にコメントを付けてコメントを外すだけで、ant は 7 で正常に動作し、6 で失敗するようになります。antjavaシェルでコマンドの直前に JVM_LIBDIR をエコーuser/share/javaすると、java.conf に記載されているとおりに受信します。しかし、ant --execdebug何か奇妙なものを返しました: JVM_LIBDIR /usr/lib/jvm-exports/openjdk-6.0.24. それは何ですか、どうすれば修正できますか?

ここで問題がわからない場合、簡単に切り替えることができる、複数のバージョンの JDK をインストールする最も適切で安全な方法は何ですか?

どんな助けでも大歓迎です。

4

3 に答える 3

6

クラスパスにjarがありません。antが依存関係を取得しているlibフォルダーに必要なライブラリがすべてあることを確認してください。

この同様の質問を確認してください。

于 2013-02-28T11:44:59.600 に答える
2

最後の質問しか答えられません。

代替システムは使用せず、手動で管理します。

Ubuntu と CentOS の両方で行うことは、常に Oracle JDK Web サイトの tar.gz を使用し、それを /opt のサブフォルダーに抽出し ( のように/opt/jdk_1.7.0_09)、フォルダーへのシンボル リンクを作成し (のように/opt/default_jdk -> /opt/jdk_1.7.0_09)、環境変数を設定することです。ここで、JAVA_HOME を実際のフォルダーではなくシンボル リンクにポイントします ( JAVA_HOME=/opt/default_jdk)。

このように、jdk を変更または更新する場合 (例: JDK 7 upadte 9 から JDK 7 upadte 15 へ)、tar.gz パッケージをダウンロードし、それを別のフォルダー (例: /opt/jdk_1.7.0_15) に抽出し、古いシンボル リンクを削除します。 (これは を/opt/jdk_1.7.0_09指します) を作成し、新しいフォルダー (例: /opt/default_jdk -> /opt/jdk_1.7.0_15) を指す新しいフォルダーを作成します。

同じ方法で、32 ビットと 64 ビットの jdk、異なるバージョンの Ant、Maven、Gradle などで動作します。

于 2013-03-11T04:00:48.067 に答える
1

Java のインストールに問題があるようです。このhttp://www.linuxforums.org/forum/red-hat-fedora-linux/151698-problems-tomcat.htmlを参照して、後で解決された同様の問題を確認してください。

于 2013-03-14T02:48:53.000 に答える