Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java错误:.class文件中的错误版本号错误_Java_Jar - Fatal编程技术网

Java错误:.class文件中的错误版本号错误

Java错误:.class文件中的错误版本号错误,java,jar,Java,Jar,我见过其他与这个错误有关的问题,但它们似乎毫无帮助 我正在编写一个在Linux系统上运行的应用程序(如果我没有弄错的话,请使用CentOS),它有Java 1.5版本。我目前正在我的MacOSX系统上的EclipseIDE上编辑该程序,该系统具有Java1.6 我将项目编译成一个可运行的.JAR文件。当提示如何处理Eclipse中的库时,我选择“将所选包提取到.JAR文件中” 我知道Eclipse有自己的编译器,所以在项目设置中,我将目标编译器更改为Java1.5并重新构建。然后重新打包可运行的

我见过其他与这个错误有关的问题,但它们似乎毫无帮助

我正在编写一个在Linux系统上运行的应用程序(如果我没有弄错的话,请使用CentOS),它有Java 1.5版本。我目前正在我的MacOSX系统上的EclipseIDE上编辑该程序,该系统具有Java1.6

我将项目编译成一个可运行的.JAR文件。当提示如何处理Eclipse中的库时,我选择“将所选包提取到.JAR文件中”

我知道Eclipse有自己的编译器,所以在项目设置中,我将目标编译器更改为Java1.5并重新构建。然后重新打包可运行的jar文件

然而,当在目标机器上运行带有“java-JAR file.JAR”的.JAR文件时,我仍然会遇到前面提到的“坏版本号”错误

有人能帮忙吗

完全错误为:

at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
我只使用一个外部库sunjavamail

谢谢你

你:

  • 尚未使用-target 1.5重新编译所有内容
  • 还没有重新部署一切
  • 正在使用为1.6编译的第三方JAR。异常中命名的类将告诉您

您可能希望在类文件上运行javap命令,并检查它所遵循的JDK的确切版本

例如:

C:\>javap -verbose Main
Compiled from "Main.java"
public class Main extends java.lang.Object
  SourceFile: "Main.java"
  minor version: 0
  major version: 50
... 
以下是主版本和jdk之间的映射

MajorVersion     JDK
51      J2SE 7
50      J2SE 6.0
49      J2SE 5.0

参考:

请打印完整错误。关于你的问题,我有两个想法,但我不能完全确定。谢谢。将在几分钟内完成。”当提示选择如何处理库时,“什么库?你是在重新编译它们,还是只是把类放到最后的Jar中?对不起,你完全正确。使用已经编译为库jar的库sun javamail。这就是问题所在。看来我在1.5目标程序中使用了javamail库,它是为1.6编译的。不过我还没有找到替代者。