当前位置: 首页 > 知识库问答 >
问题:

新安装的JDK给出了警告和运行时错误major.minor版本不匹配

桂志新
2023-03-14

我必须为运行Debian的专用硬件开发一个GUI。因此,我得到了一个它将运行的硬件的例子,我安装了最新的JRE(因为它没有安装太多),将我的代码从我的开发环境转移到一个不太旧的Fedora-Core盒子上,启动应用程序并得到:

Exception in thread "main" java.lang.UnsupportedClassVersionError: mygui/MYGUI : Unsupported major.minor version 52.0

觉得这很奇怪,我做了典型的yum更新,然后构建并得到了同样的东西......因此,我决定只在新盒子本身上进行构建,我安装了JDK。然后,我使用新安装的JDK进行了构建,这很好,但对于一个文件 - 我的坏在文件名/类名不匹配 - 所以我修复了它,并重新编译了一个文件并得到:

warning: /opt/mygui/lib/fubar.class: major version 52 is newer
than 51, the highest major version supported by this compiler.
  It is recommended that the compiler be upgraded.
1 warning

这告诉我编译器本身一定有错误!它只是在看它自己刚刚构建的文件!一位队友建议我删除JRE,但我看不出这有什么帮助,因为编译器本身一定标记错了输出。

在你问之前:

# javac -version
javac 1.7.0_111
# java -version
java version "1.7.0_111"
OpenJDK Runtime Environment (IcedTea 2.6.7) (7u111-2.6.7-1~deb8u1)
OpenJDK Zero VM (build 24.111-b01, interpreted mode)

我想有人看过这个-有人吗?

还没有完成,因为编译器只给出了一个警告,所以我开始运行它。最初的画面表现得很好,我认为一切都已修复!耶!但是我试着点击一个菜单项,打开一个新的框架,但没有成功,新的框架没有启动,在错误消息转储的顶部,我得到:

Exception in thread "AWT-EventQueue-0"
java.lang.UnsupportedClassVersionError: mygui/secondframe : Unsupported
major.minor version 52.0

好吧,那么“它坏了。”有人吗?

(注意:我发现了另一个类似的问题,但它显然与我的场景不同。

更新:好吧,好吧,我已经明白Java认为它有版本不匹配。关注这个问题的人关注的是错误的问题。问题是“它怎么可能认为自己是错误的版本?更重要的是,我到底该怎么办?!”

更新二:在拉克西塔·拉纳辛哈(如下)的建议下,我运行了他推荐的javap命令,答案是:

$ javap -v mygui.MYGUI | grep major
  major version: 51

因此,这表明JDK和“java”运行时环境都有一个错误(它是来自我安装的JRE还是后来安装的JDK,我实际上不知道)。出于某种原因,javac和java程序在试图对同一个包的各个部分进行更多的编译或者运行这个包时,都会得到错误的数据。

更新三:我真的不在乎版本是什么,也没有外部库或应用程序。它是由同一个版本编译的全部——我的意思是全部。涉及“版本7”的唯一原因是硬件供应商向我/我们/他们的客户指出了它。这是他们的产品,基本上是一年前3月发布的:

TS-7970

这是他们告诉我们如何添加Java的地方。总而言之,他们说运行:

# apt-cache search openjdk

然后挑一个最小的,然后跑:

# apt-get install openjdk-7-jre

我这样做了,后来又做了:

# apt-get install openjdk-7-jdk

在这一切开始之后,我做到了-并且得到了:

# apt-get install openjdk-8-jdk

Package openjdk-8-jdk is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

我认为没有版本8可用。

...因此...也许我必须删除所有这些,并以其他方式安装软件包。但是怎么做呢?这不是一个强大的盒子。在我的开发系统上编译需要几秒钟,在这上面需要20多分钟...

第四次,也许是最后的更新:...我认为这个问题更适合服务器保险箱论坛或超级用户论坛,因为它不是编程问题。我想我是老派的,从这个网站的早期就在这里,当时这是唯一的论坛。但落选只是一个线索。问题是,我看到问题在论坛之间“迁移”,但不知道如何做。如果有人愿意评论如何做到这一点,它可能会让这里的人们更开心,他们不必处理非编程问题,同时提高我的几率。或者,我可以重新输入它。

共有2个答案

陶胤运
2023-03-14

好吧,事实证明这是一个安装问题。

一个关键的线索是:

# apt-get install openjdk-8-jdk

Package openjdk-8-jdk is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

由于没有一个可用的类文件来自这个编译器创建的内容,并且由于其他评论或答案都没有关注安装问题,我决定这是一个可能的途径。

所以,我的想法是,特别是这一行,是关键:

Package openjdk-8-jdk is not available, but is referred to by another package.

所以,我删除了所有与Java相关的内容,并重新安装了JDK。我还删除了之前构建的全部内容,只剩下源代码java文件,然后对所有内容进行了重新编译。

令我高兴的是,这起作用了。

(所有投反对票的人以及其他持否定态度的人都需要重新考虑他们的观点。安装问题是真实存在的,不一定是工作人员的错。安装错误也会发生。)

丁韬
2023-03-14

您试图在Java 7上运行Java 8编译的应用程序,这是不可能的。您可以使用以下命令检查您的类版本:

javap-vfubar。课程|grep专业

即使设置<code>源

来源于维基百科,版本编号如下:

Java SE 10 = 54 (0x36 hex),[3]
Java SE 9 = 53 (0x35 hex),[4]
Java SE 8 = 52 (0x34 hex),
Java SE 7 = 51 (0x33 hex),
Java SE 6.0 = 50 (0x32 hex),
Java SE 5.0 = 49 (0x31 hex),
JDK 1.4 = 48 (0x30 hex),
JDK 1.3 = 47 (0x2F hex),
JDK 1.2 = 46 (0x2E hex),
JDK 1.1 = 45 (0x2D hex)

这个回答也会有帮助。

 类似资料:
  • 运行时错误和警告发生在SystemTap安装了检测代码并开始收集数据的时候。 ⁠WARNING: Number of errors: N, skipped probes: M 在运行时出错并/或跳过某些探针。由于诸如给定时间不足以执行完处理程序的原因,某些探针没有得到执行,N和M就是这些探针的数目。 ⁠division by 0 代码里出现了除零错误。 ⁠aggregate element not

  • 问题内容: 我按照以下步骤安装了Maven :(一个教程) 然后我在.bash_profile里写了回声,像这样: 我也是在.bashrc中写的 现在,当我要检查版本()时,出现以下异常:我认为某些版本错误,但是我不知道。 附加信息: 问题答案: 问题是因为您没有在Mac中正确设置JAVA_HOME。为了做到这一点,你应该像这样设置它: 在我的情况下,我的JDK安装为jdk1.8.0_40,请确保

  • 问题内容: 在Windows 8上安装JDK 1.7时出现以下错误。 “错误1335。此安装所需的机柜文件’st170510.cab’已损坏,无法使用。这可能表示网络错误,从CD-ROM读取错误或此软件包有问题。” 我已经从oracle Foundation下载了最新版本的JDK。我的PC上以前安装了JDK 1.6。我卸载了它,并尝试安装此版本并遇到此错误。 有关更多信息,我已经在系统上安装了JR

  • 本文向大家介绍安装SqlServer2005时版本变更检查 (警告),包括了安装SqlServer2005时版本变更检查 (警告)的使用技巧和注意事项,需要的朋友参考一下 安装SqlServer2005时“版本变更检查 (警告)"问题排查 今天同事在安装SqlServer2005时遇到“版本变更检查 (警告) ”问题导致安装失败,警告提示如下: - 版本变更检查 (警告) 消息 版本变更检查 若要

  • 在W10中安装VS2015后,并试图编译一个在W7中完美工作的项目,我得到了这个错误:不支持major.minor版本52.0。 我尝试安装Java7U80、Java7U79、Java8、更改类路径等等。。。

  • 嗨,伙计们,我有两个问题 我收到这个警告消息。 为com.souq.marketplace构建有效模型时遇到了一些问题:selling-center-services:war:0 . 0 . 1-SNAPSHOT[WARNING]com . souq的“dependencies . dependency . system path”service manager:jar不应指向项目目录中的文件,$