首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jlink中的记录:ed应用程序抛出异常

jlink中的记录:ed应用程序抛出异常
EN

Stack Overflow用户
提问于 2020-04-29 23:01:15
回答 4查看 193关注 0票数 9

在jlink:ed应用程序中使用记录(预览功能java-14)时,在使用选项时会出现以下错误:

代码语言:javascript
复制
options = ['--strip-debug', '--compress', '2', '--no-header-files', '--no-man-pages']

java.lang.ClassFormatError: Invalid constant pool index 11 for name in Record attribute in class file 
myproj/MyClass$MyRecord
    at java.base/java.lang.ClassLoader.defineClass1(Native Method)
    at java.base/java.lang.ClassLoader.defineClass(Unknown Source)
    at java.base/java.lang.ClassLoader.defineClass(Unknown Source)
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2020-04-30 16:50:14

假设最终目标是减小自定义Java运行时映像的大小,那么JDK14 (仅限Linux)上的一个选项是只删除本机调试符号( fat实际上是这样的!)并使用—-strip-native-debug-symbols保留Java debug属性(以避免当前的ASM问题)。

有关详细信息,请参阅https://delabassee.com/StrippingDebug-Jlink/

票数 3
EN

Stack Overflow用户

发布于 2020-04-30 00:52:04

我建议你尝试使用JDK-15,它有一个更新版本的ASM (ASM 8.0.1),支持records,这应该可以解决你的问题。这是与对ASM (ASM 8.0.1):JDK-8241627的更新相关的错误报告。当我们开发JDK14时,这个版本的ASM还不可用。我从来没有看到过ASM的后端口到以前的JDK版本,并且考虑到record是一个预览功能……

票数 7
EN

Stack Overflow用户

发布于 2020-04-30 00:51:55

我可以用一个简单的"hello world“module重现这个问题,它使用了record特性和JDK-14。

另一方面,对于JDK-15构建(从源代码库构建),它工作得很好。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61504956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档