【问题标题】:Java Compilation error on MacMac 上的 Java 编译错误
【发布时间】:2012-06-08 17:27:27
【问题描述】:

我一直在使用 Eclipse 进行编码,并在 OS X 10.7.4 上使用终端测试代码。当我用 Eclipse 运行代码时,它可以工作。但是,使用终端运行给了我以下错误:

Exception in thread "main" java.lang.UnsupportedClassVersionError: PacketPrinter : Unsupported major.minor version 51.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
    at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

我检查了我的 java 和 javac 版本。他们都是1.7。我一直在谷歌搜索,但找不到任何东西。

【问题讨论】:

  • 检查使用的是哪个 JRE eclipse,我敢打赌它与 $PATH 中的默认 JRE 不同
  • Eclipse 正在使用 JRE 1.7。在我的 $PATH 中,我没有看到任何关于 Java 的内容

标签: java


【解决方案1】:

您在命令行上使用的运行时可能与在 Eclipse 中启动程序时使用的运行时不同。

尝试执行

java -version

从命令行查看您在终端上使用的 java 版本。

(您也可以运行which java 来查看正在执行的确切文件。)

【讨论】:

  • 我上面说了,终端运行的java版本是1.7
  • 我执行了 which java,它显示 /Library/Java/Home/bin/java 正在运行。顺便说一句,我看到我的机器里只有 Java 1.7
【解决方案2】:

看来您在 eclipse 和终端中运行的 java 版本不同。

执行以下操作:

在终端输入:java -version 在 Eclipse 中转到首选项并查看 Java/已安装的 JRE

比较版本。

将 $JAVA_HOME 和 $PATH 变量指向您在 Eclipse 中使用的同一个 JRE。

【讨论】:

  • 在 Eclipse 中,我发现 Java/Installed JRE 中只有 1.7,这很奇怪,因为它应该预装了 1.6。另外,如何将 $JAVA_HOME 和 $PATH 变量指向 JRE?你能解释清楚一点吗?谢谢
  • 为了测试你可以输入 PATH=$PATH: 和 JAVA_HOME= 如果你想永久添加设置,打开 ~/.bash_profile (或者~/.profile,检查哪个已经存在)并在那里进行更改...
【解决方案3】:

正如 aioobe 所说,使用以下命令检查您的 java 版本

java -version

将 PATH 设置的内容复制到记事本并检查其中是否存在任何其他 java 版本路径以及是否在 7 之前。如果是,请在 PATH 设置中删除该路径并保存。

我建议你在完成后重新登录。

当您在路径中存在旧版本的 java 路径时,会出现此错误。

【讨论】:

  • 这是我执行命令 echo $PATH /Library/Frameworks/Python.framework/Versions/3.2/bin:/usr/local/mysql/bin:/usr/bin 时得到的: /bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin
猜你喜欢
  • 2014-04-26
  • 2016-03-06
  • 1970-01-01
  • 1970-01-01
  • 2017-09-15
  • 1970-01-01
  • 1970-01-01
  • 2017-06-09
  • 2011-10-21
相关资源
最近更新 更多