Ame*_*aki 4 java linux ant openjdk fedora
我正在使用Fedora 17.我正在尝试使用与Java 7不兼容的ant构建文件编译项目.所以我决定安装OpenJDK 6.不幸的是,JDK 6从yum存储库中删除了,我认为它将是易于手动安装.我了解到没有JAVA_HOME变量,而是使用替代系统.所以我下载了OpenJDK二进制文件(如果重要的话,从OSG下载)并使用alternatives --install命令安装了java&javac和javaws .检查java --version并javac --version证明它是成功的.但奇怪的是,蚂蚁不再工作了!当我输入时,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.
Run Code Online (Sandbox Code Playgroud)
与java一样,也没有ANT_HOME变量.但是在安装java 6之前没有ANT_HOME,而它工作正常.Ant安装在已经在PATH中的/ usr/bin/ant下.
更新:我知道有类似问题qustion 1,问题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=
Run Code Online (Sandbox Code Playgroud)
通过只注释和取消注释java.conf中的相应行,它转为ant使用7工作正常并且失败为6.当我java在ant shell中的命令之前回显JVM_LIBDIR时,我收到user/share/javajava.conf中所述.但是ant --execdebug又回来了一些奇怪的事:JVM_LIBDIR /usr/lib/jvm-exports/openjdk-6.0.24.那是什么,我该如何解决?
如果你不能在这里说出问题,安装多个版本的JDK最简单,最安全的方法是什么,可以轻松切换?
任何帮助都非常感谢.
| 归档时间: |
|
| 查看次数: |
12323 次 |
| 最近记录: |