无法在ubuntu中执行java类文件

时间:2015-04-07 11:36:54

标签: java tomcat ubuntu openjdk

我是java的新手。我开始在ubuntu 64位机器上安装oracle java,然后设置了CLASS_PATH

export JAVA_HOME=/usr/lib/java/jdk1.8.0_40 set PATH="$PATH:$JAVA_HOME/bin"

如果我在终端中添加以下命令java -version,则说 1.8 oracle java javac -version javac 1.8.0_40

然后我创建了一个java文件,我能够编译并执行该文件。现在我安装了tomcat7。现在如果我放java -version它正在显示

java version "1.7.0_55"
OpenJDK Runtime Environment (IcedTea 2.4.7) (7u55-2.4.7-1ubuntu1~0.13.10.1)
OpenJDK 64-Bit Server VM (build 24.51-b03, mixed mode)

javac -version

javac 1.8.0_40

但是现在我能够编译我之前编译和运行的相同java文件但不能执行该文件。它是说跟随错误..

Exception in thread "main" java.lang.ClassFormatError: Incompatible magic value 791289926 in class file TestBean
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)

从这里我可以理解javac是1.8(oracle)而java是1.7(openjdk)。现在我需要配置java 1.8(oracle)。我该怎么做?另外如果我在执行java类文件时给oracle jre完整路径(/ usr / lib / java / jdk1.8.0_40 / jre / bin / java)它正在执行。如果有人知道解决方案,请给我......

4 个答案:

答案 0 :(得分:1)

再次更改您的Java_Home,如下所示:

export JAVA_HOME=/usr/lib/java/jdk1.8.0_40/bin/java

答案 1 :(得分:1)

您需要编译.class文件并使用相同的Java版本运行它。所以在你的情况下,再次编译.class文件并尝试运行它,这应该可行。

这就是为什么当你使用完整的javac路径编译文件时它的工作原理。混合使用JDK和JRE版本并不是一个好主意。

答案 2 :(得分:1)

你真的设置了CLASS_PATH变量吗?除非你有一个非常具体的理由你应该解决这个问题,否则如果你不知道自己在做什么就会引起问题。

为了配置在Ubuntu上使用哪个JDK,你应该使用:

sudo update-alternatives --config java

如Java的Ubuntu帮助页面中所述 - https://help.ubuntu.com/community/Java

答案 3 :(得分:1)

在/ etc / profile中设置类路径 export JAVA_HOME = / usr / lib / java / jdk1.8.0_40 export PATH = $ PATH:$ JAVA_HOME / bin