在 Windows cmd 中导出到 .jar 文件和 运行 - JNI 错误?
Exporting to .jar file and running in Windows cmd - JNI error?
我在 Eclipse IDE(版本:2019-09 R (4.13.0))中制作了一个 java 程序,其中包含多个 class 应该 运行 在终端中(例如 cmd)。
为此,我首先尝试导出我的项目:
导出... > 可运行的 JAR 文件
我选择了 Main class 作为启动配置,然后单击了单选按钮 "Extract required libraries into generated JAR"。我完成了,导出似乎工作正常。
我知道试图通过以下尝试在 cmd 中 运行 这个程序: (java -jar fdm.jar
)
现在出现错误:
Exception in thread "main" java.lang.UnsupportedClassVersionError: general/Main has been compiled by a more recent version of the Java Runtime (class file version 54.0), this version of the Java Runtime only recognizes class file versions up to 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
at java.net.URLClassLoader.access0(URLClassLoader.java:74)
at java.net.URLClassLoader.run(URLClassLoader.java:369)
at java.net.URLClassLoader.run(URLClassLoader.java:363)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:495)
在某些时候 Java 版本似乎有问题,可能发生了什么,我应该如何避免?我想将 .jar 文件发送给需要稍后能够正确 运行 的另一个人。
general/Main has been compiled by a more recent version of the Java Runtime (class file version 54.0), this version of the Java Runtime only recognizes class file versions up to 52.0
您使用 Java 10 ("class file version 54") 编译了您的项目,并且您 运行 使用 Java 8 ("recognizes class file versions up to 52.0").
有关详细信息,请参阅这些文章:
我现在真的设法解决了这个问题。这里描述了一个类似的问题:
https://coderanch.com/t/701603/java/JRE-JDK
我的问题:我安装了不同版本的 JDK。我需要将我的 JDK 11 路径(在我的例子中:C:\Program Files\Java\jdk-11\bin
)添加到 "Path" 环境变量并将其移动到顶部。
现在,java -jar fdm.jar
一切正常。
感谢您的帮助!
我在 Eclipse IDE(版本:2019-09 R (4.13.0))中制作了一个 java 程序,其中包含多个 class 应该 运行 在终端中(例如 cmd)。
为此,我首先尝试导出我的项目: 导出... > 可运行的 JAR 文件
我选择了 Main class 作为启动配置,然后单击了单选按钮 "Extract required libraries into generated JAR"。我完成了,导出似乎工作正常。
我知道试图通过以下尝试在 cmd 中 运行 这个程序: (java -jar fdm.jar
)
现在出现错误:
Exception in thread "main" java.lang.UnsupportedClassVersionError: general/Main has been compiled by a more recent version of the Java Runtime (class file version 54.0), this version of the Java Runtime only recognizes class file versions up to 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
at java.net.URLClassLoader.access0(URLClassLoader.java:74)
at java.net.URLClassLoader.run(URLClassLoader.java:369)
at java.net.URLClassLoader.run(URLClassLoader.java:363)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:495)
在某些时候 Java 版本似乎有问题,可能发生了什么,我应该如何避免?我想将 .jar 文件发送给需要稍后能够正确 运行 的另一个人。
general/Main has been compiled by a more recent version of the Java Runtime (class file version 54.0), this version of the Java Runtime only recognizes class file versions up to 52.0
您使用 Java 10 ("class file version 54") 编译了您的项目,并且您 运行 使用 Java 8 ("recognizes class file versions up to 52.0").
有关详细信息,请参阅这些文章:
我现在真的设法解决了这个问题。这里描述了一个类似的问题: https://coderanch.com/t/701603/java/JRE-JDK
我的问题:我安装了不同版本的 JDK。我需要将我的 JDK 11 路径(在我的例子中:C:\Program Files\Java\jdk-11\bin
)添加到 "Path" 环境变量并将其移动到顶部。
现在,java -jar fdm.jar
一切正常。
感谢您的帮助!