Java FAQ -- "Exception in thread 'main' java.lang.UnsupportedClassVersionError:"

  OS:Ubuntu

  最近重新学习Java,写了一段很小的程序,如下:

public class Hello{
    public static void main(String args[]){
        System.out.println("hello");
    }
}

  当javac Hello.java, java Hello后发现出现了下面的提示错误:

Exception in thread "main" java.lang.UnsupportedClassVersionError: Hello : Unsupported major.minor version 52.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:643)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
    at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
Could not find the main class: Hello. Program will exit.

  后来通过两条命令明白了出现这一问题的原因:

lxw@19:08:51:~$ which javac
/home/lxw/Downloads/jdk1.8.0/bin//javac
lxw@19:08:54:~$ which java
/usr/bin/java

  这时我又查看了下PATH的值:

lxw@19:12:11:~$ echo $PATH
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/lxw/Downloads/jdk1.8.0/bin/  

  出现上述错误的原因是:我在PATH中添加了jdk的路径,但该路径(/home/lxw/Downloads/jdk1.8.0/bin/)在/usr/bin/java的后面,

所以执行java命令时,执行的是/usr/bin/java,而该目录下的java版本和我在PATH中设定的jdk路径下的javac的版本是不一样的,所

以才出现了上面的错误。

  所以可以采用下面的方法解决:

  在.bashrc中添加 PATH=jdk路径/bin:${PATH} ,注意不是PATH=${PATH}:jdk路径/bin。

原文地址:https://www.cnblogs.com/lxw0109/p/UnsupportedClassVersionError.html