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.
r
u
n
(
U
R
L
C
l
a
s
s
L
o
a
d
e
r
.
j
a
v
a
:
212
)
a
t
j
a
v
a
.
s
e
c
u
r
i
t
y
.
A
c
c
e
s
s
C
o
n
t
r
o
l
l
e
r
.
d
o
P
r
i
v
i
l
e
g
e
d
(
N
a
t
i
v
e
M
e
t
h
o
d
)
a
t
j
a
v
a
.
n
e
t
.
U
R
L
C
l
a
s
s
L
o
a
d
e
r
.
f
i
n
d
C
l
a
s
s
(
U
R
L
C
l
a
s
s
L
o
a
d
e
r
.
j
a
v
a
:
205
)
a
t
j
a
v
a
.
l
a
n
g
.
C
l
a
s
s
L
o
a
d
e
r
.
l
o
a
d
C
l
a
s
s
(
C
l
a
s
s
L
o
a
d
e
r
.
j
a
v
a
:
323
)
a
t
s
u
n
.
m
i
s
c
.
L
a
u
n
c
h
e
r
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
1.run(URLClassLoader.java:212)atjava.security.AccessController.doPrivileged(NativeMethod)atjava.net.URLClassLoader.findClass(URLClassLoader.java:205)atjava.lang.ClassLoader.loadClass(ClassLoader.java:323)atsun.misc.LauncherAppClassLoader.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: P A T H , 注 意 不 是 P A T H = {PATH} ,注意不是PATH= PATH,注意不是PATH={PATH}:jdk路径/bin。