java - 当看不到 java 7 时,Jwrapper 因 java 7 invokedynamic 的类版本错误而失败

标签 java build java-8 jwrapper

我正在尝试构建我的 jwrapper 应用程序,但失败并显示

WARNING: Error on output: java.io.IOException: bad class major version for Java 7 invokedynamic
**********************************
*          BUILD FAILED          *
**********************************
** Error Trace:

java.io.IOException: bad class major version for Java 7 invokedynamic
    at com.sun.java.util.jar.pack.PackageWriter.writeByteCodes(PackageWriter.java:1657)
    at com.sun.java.util.jar.pack.PackageWriter.writeMembers(PackageWriter.java:1227)
    at com.sun.java.util.jar.pack.PackageWriter.writeClassesAndByteCodes(PackageWriter.java:1202)
    at com.sun.java.util.jar.pack.PackageWriter.write(PackageWriter.java:79)
    at com.sun.java.util.jar.pack.PackerImpl$DoPack.flushPackage(PackerImpl.java:602)
    at com.sun.java.util.jar.pack.PackerImpl$DoPack.flushAll(PackerImpl.java:556)
    at com.sun.java.util.jar.pack.PackerImpl$DoPack.run(PackerImpl.java:492)
    at com.sun.java.util.jar.pack.PackerImpl.pack(PackerImpl.java:98)
    at jwrapper.pack200.Pack200Compressor.compressFileToOutputStream(Pack200Compressor.java:225)
    at jwrapper.archive.Archive.addFileToStream(Archive.java:422)
    at jwrapper.archive.Archive.addFile(Archive.java:159)
    at jwrapper.archive.Archive.addFile(Archive.java:103)
    at jwrapper.archive.LaunchableArchive.addFile(LaunchableArchive.java:43)
    at jwrapper.archive.LaunchableArchive.addFile(LaunchableArchive.java:29)
    at jwrapper.JWrapperCompiler.main(JWrapperCompiler.java:2827)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    at SecureRunner2.<init>(SecureRunner2.java:452)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
    at SecureRunner1.<init>(SecureRunner1.java:410)
    at SecureRunner1.<init>(SecureRunner1.java:227)
    at SecureRunner1.main(SecureRunner1.java:52)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)

它过去构建时没有任何问题,也没有任何改变(不是jwrapper.xml文件,如果有帮助的话可以附加它,也不是java版本jdk1.8.0_31,甚至是被包装的代码! )。让我困惑的是(是的,我在 google 上搜索了 invokedynamic、java 7、jwrapper 等以及它们的各种组合),Java 7 是如何参与的。我的系统上没有 Java 7 实例 - 我正在打包 1.8.0_31 JRE,并使用 jdk1.8.0_31 来运行该进程。

最佳答案

提到 Java 7 是因为 Java 7 中的 JVM 添加了“invokedynamic”指令。

所以看起来代码正在使用“invokedynamic”,但类文件版本是 Java 6 或更早版本(因此主要版本是错误的)。

关于java - 当看不到 java 7 时,Jwrapper 因 java 7 invokedynamic 的类版本错误而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28702142/

相关文章:

android - 仅使用 armeabi 构建的应用程序能否在 armeabi-v7a 设备上运行?

build - 如何在 Geany 文本编辑器中添加 4 个以上的 build "independent commands "? (在“构建”>“设置构建命令”中)

java - 难道不能保证从列表派生的并行流总是表现得像它的顺序对应物一样,提供相同的、可预测的输出吗?

java - 如何使用 ScriptEngineManager 方法 getEngineByName ("nashorn")添加参数?

java - RMI 客户端/服务器 - 文件传输

java - 如何根据数据库中的值将textView向右或向左对齐

Java jsoup链接提取(输出错误)

build - ivy.xml 用于发布工件的目的是什么?

java - 在 Spring Data Repositories 之上使用 EntityManager

java - 使用流 API 合并列表