【问题标题】:java.lang.ClassFormatErrorjava.lang.ClassFormatError
【发布时间】:2012-03-26 22:42:05
【问题描述】:

我需要开发一个示例应用程序并将其部署在 Linux 中并进行测试。

问题是我得到了

Exception in thread "main" java.lang.ClassFormatError: com.tata.topSamples.QuoteData (unrecognized class file version)
   at java.lang.VMClassLoader.defineClass(libgcj.so.7rh)
   at java.lang.ClassLoader.defineClass(libgcj.so.7rh)
   at java.security.SecureClassLoader.defineClass(libgcj.so.7rh)
   at java.net.URLClassLoader.findClass(libgcj.so.7rh)
   at java.lang.ClassLoader.loadClass(libgcj.so.7rh)
   at java.lang.ClassLoader.loadClass(libgcj.so.7rh)
   at gnu.java.lang.MainThread.run(libgcj.so.7rh)

通过谷歌搜索,我发现,您编译的 jar 版本比 Linux 机器上的 Java 版本更新

在我的 windows 环境中,我有 1.6 版本,而在 Linux 环境中,java 版本是 1.4.2。

我们如何解决这个错误?

【问题讨论】:

  • 升级安装在您的 Linux 机器上的 Java?或者这对你来说不可能吗?
  • 将您的 Linux 环境更新为更新的 Java 版本; 1.4.2 已经过时了。

标签: java linux classformaterror


【解决方案1】:

请告诉我如何解决这个错误??

要么使用-target 1.4-source 1.4 标志进行编译,要么在您的Linux 机器上更新到更新版本的Java。 (请注意,使用这些标志可以让您在 Windows 机器上保留更新版本的 JDK。)

所以:

javac -target 1.4 -source 1.4 Foo.java Bar.java

您是否使用 GCJ 而不是(比如说)OpenJDK

【讨论】:

  • 你能告诉我怎么做吗??
  • @yyyi777:哪个位?我给了你两个选择,但你没有告诉我们任何关于你的 Linux 部署的限制或你如何构建你的代码。
【解决方案2】:

在您的 Linux 环境中升级版本,或在 Windows 上使用 1.4.2 构建它。

【讨论】:

    猜你喜欢
    • 2012-12-01
    • 2018-06-09
    • 2012-09-21
    • 2012-05-06
    • 2020-07-09
    • 1970-01-01
    • 1970-01-01
    • 2013-01-14
    • 1970-01-01
    相关资源
    最近更新 更多