线程“main”中的exceptionjava.lang.UnsupportedClassVersionError:a(Unsupported major.minor version 51.0)

可能重复:
不受支持的主要.minor版本51.0

我安装了JDK7,一个简单的hello word程序得到编译,但是当我运行这个时,我得到了下面的exception。

Exception in thread "main" java.lang.UnsupportedClassVersionError: a (Unsupported major.minor version 51.0) at java.lang.ClassLoader.defineClass0(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$100(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) 

我在命令提示符处检查了java -version ,它显示Java版本1.4.2_03,但是当我尝试从java.com安装新的java版本时,它说我推荐了Java 7版本。

将PATH设置的内容复制到记事本中,并检查1.4.2的位置是否在7的位置之前。如果是这样,请在PATH设置中删除1.4.2的path并保存。

保存并应用“环境variables”后closures并重新打开cmd行。 在XP中,path不会反映在已经运行的程序中。

从命令行尝试使用sudo update-alternatives --config java来设置要使用的JRE的版本。 这应该解决它。

假设你正在使用Eclipse,在MAC上你可以:

  1. 启动Eclipse.app
  2. selectEclipse -> Preferences
  3. selectJava -> Installed JREs
  4. 点击Add...button
  5. selectMacOS X VM作为JREtypes。 按下一步。
  6. 在“JRE Home:”字段中,input/Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home
  7. 您应该在标题为“JRE系统库:”的列表中看到系统库
  8. 给JRE一个名字。 推荐的名称是JDK 1.7 。 点击完成。
  9. 选中刚刚创build的JRE条目旁边的checkbox。 这将导致Eclipse将其用作所有新Java项目的默认JRE。 点击OK。
  10. 现在,创build一个新的项目。 对于此validation,从菜单中selectFile -> New -> Java Project
  11. 在出现的对话框中,input您的项目的新名称。 对于此validation,请键入Test17Project
  12. 在对话框的JRE部分,selectUse default JRE (currently JDK 1.7)
  13. 点击完成。

希望这可以帮助

在安装了Java 6之后的jdk7之后,我遇到了这个问题。使用update-alternatives --config java正确更新了二进制文件到jdk7,但$JAVA_HOME环境variables仍然指向Java 6的旧目录。

听起来就像你需要改变你的java可执行文件的path来匹配最新版本。 基本上,安装最新的Java并不一定意味着你的机器被configuration为使用最新版本。 你没有提到任何平台的细节,这就是我所能说的。