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。