java - jlink :ed application throws exception中的记录

标签 java jlink java-14 java-record preview-feature

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

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)

最佳答案

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

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

关于java - jlink :ed application throws exception中的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61504956/

相关文章:

java - Java 记录是否旨在最终成为值类型?

java - Java-14 之后的 getter/setter 命名约定

java - JPackage在创建DMG之前将文件复制到应用程序的Resource文件夹中

java - 呃哦 - 应用程序意外停止

java - 带字段的比较器类

java - JLink 不生成可重新分发的图像

java - jlinked JRE 中的 "Received fatal alert: handshake_failure"

java - 为什么我们需要提供两次通用信息?

java - 如何获取目录中文件的绝对路径?

java - 使用 JMod 插件部署应用程序时出现错误 java.util.zip.ZipException : duplicate entry: classes/META-INF/MANIFEST. MF