2011年(8)
分类: LINUX
2011-12-19 16:50:52
有没有终端下写好了的.java编译后不能运行?
主要是在linux下有openjdk和oracle的jdk,由此导致使用安装命令安装时出现
安装了多个版本的问题,如果在软件管理器里面安装jdk的则无此问题
运行是会出想如下错误提示:Exception in thread "main" java.lang.UnsupportedClassVersionError: Hello : Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:634)
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:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: Hello. Program will exit.
上面的意思是对应的.class 的java版本低于编译的javac的版本
网上查看之后,大部分都是说的windows平台下的东西,解决的办法主要是把
相应版本的java的path放在前面,也就是保证java对应这相应的javac
出现这个问题,你可一先查看下java的版本与javac的版本,因该是不一致,
$: java -version
$: javac -version
然后,在找到java的路径,进一步分析:
$:which java
$:which javc 大致在 /usr/bin/java 或者/usr/lib/java
然后ls -al /**/bin/java 查看详细信息,会发现/**/bin/java只是一个超链接。
由此,可以想出解决的办法,
可以新建一个超链接, 找到java的位置,
locate */bin/java 可以看到 几个java的准确位置
找到支护就可以对应建立链接了,
#:ln -s /usr/lib/jvm/java-7-openjdk-amd64/bin/java /bin/jj (当然名字可以自己取,但是呀记住)
以后运行.class是就用
jj **
或者你也可以吧 /**/bin/java 重命名或者删除(不建议)
#:mv /**/bin/java /**/bin/jav
(/usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java,这也是java的一个路径,遇上面的都可以作为运行.class用)
可以先 /usr/lib/jvm/java-7-openjdk-amd64/bin/java **应该是可以运行了的
同理,javac可以改也可以不改,
基本上解决办法也就是这样。