帮酷LOGO
0 0 评论
  • 显示原文与译文双语对照的内容
文章标签:EXEC  CAN  EXE  JAVA  

问题:

我已经安装了 6,但是我不能执行Java程序。

例如,我使用 javac tes.java 编译了 test.java.,编译它时没有错误,但是当我想执行该程序时,它总是显示错误。 我使用 java tes 执行Java程序。


Exception in thread"main" java.lang.UnsupportedClassVersionError: tes : 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: tes. Program will exit.



我的javac版本是 1.7.0,我的java版本是 1.6.0.

以下是我的tes.java 代码:


class tes{



 public static void main(String[]args){


 System.out.println("hello"); 


 } 



}




回答 1:

看起来你已经用较新版本的Java ( 7 ) 编译了Java源代码,而旧的Java运行时( 6 ) 无法执行它。 如果你不需要/需要 Java 7,请卸载 openjdk-7-jdk 软件包并安装 openjdk-6-jdk:


sudo apt-get remove openjdk-7-jdk


sudo apt-get install openjdk-6-jdk



替代方法是使用编译器或者运行时的特定版本的直接路径:

运行 Java 7运行时

Java 6仍然是默认的( 与旧程序的兼容性)。 要强制使用 Java 7运行时,请使用直接路径:


/usr/lib/jvm/java-7-openjdk-amd64/bin/java tes



( 用 i386 替换 amd64的32位 版本的Java )

运行Java编译器版本 6

如果希望为Java版本 6编译代码,请使用 Java 6编译器的完整路径:


/usr/lib/jvm/java-6-openjdk/bin/javac tes.java



可替换项

如我之前所说,如果你不喜欢版本 7或者 6,请卸载它(。openjdk-7-jdkopenjdk-7-jre 版本 7,openjdk-6-jdkopenjdk-6-jre 版本 6 )。 可以同时安装两个版本。 使用备用系统配置默认的系统。 运行下面的命令来配置运行时和编译器。 它将为你提供默认的选择。


sudo update-alternatives --config java


sudo update-alternatives --config javac




回答 2:

请看一下这个 Java.net 线程 http://www.java.net/node/664117.

总之,当你使用一个JDK版本编译代码,然后尝试在较旧版本的JDK上运行编译代码。 例如如果使用JDK6编译代码,但尝试用JDK5运行代码,则会出现这里错误。

如果在同一台电脑上编译和运行 test.java,那么请比较以下命令的输出。 我相信他们会给你单独的版本号。


javac -version


java -version



如果你在一个PC上编译,然后在另一个PC上运行,那么将编译到PC的第二个命令的输出。

如果你把这个版本信息添加到你的问题中也会有所帮助。


回答 3:

每个生成的类文件都有一个主要的和次要的版本。 因为特定的jvm支持主要版本和次要版本内的范围。 所以你的编译类文件有更高的版本,然后你的jvm支持。 现在你有两个选择可以使用" 1.6 java编译器"或者" 1.7 java"。


回答 4:

尝试了上所有的,如果仍然不能工作。 尝试执行以下命令的文件:


javac tes.java


java -cp"." tes



当没有设置CLASSPATH变量时,会观察到这种错误。 即使我也有同样的问题。 不能执行它。使用上面的命令,它做了。

关于类路径的更多信息。


回答 5:

因为 test.java 文件必须与一起使用,所以它不能独立于你的JDK编译文件,这是因为 *.java 文件 NAME 必须对它的类进行 MATCH,而我假设它没有任何名称。 那么 javac test.java的工作?

javac 手册手册中的附加信息:

源代码文件名必须具有. java 后缀,类文件名必须具有. class 后缀,并且源文件和类文件必须具有标识类别的名称。 例如一个名为MyClass的收费类将用名为 MyClass.java的源代码文件编写,并编译为一个名为 MyClass.class的字节字节文件。"


回答 6:

用户 sudo update-alternatives --config java 并设置你可能要使用的版本。




文章标签:JAVA  CAN  EXE  EXEC  

Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语