【问题标题】:java.lang.VerifyError when running desktop application运行桌面应用程序时出现 java.lang.VerifyError
【发布时间】:2021-08-30 14:18:41
【问题描述】:

我有一个 Java 桌面应用程序,我正在使用 Proguard 进行混淆,并使用 Install4j。 我可以使用其他有相同问题的人推荐的参数“-noverify”来运行应用程序的 jar 文件。但我无法运行 exe 文件(在 Install4j 的参数中添加了“-noverify”)。

有什么想法吗?谢谢!

【问题讨论】:

  • 你构建 jar 的 java 版本是什么,你运行它的 java 版本是什么?
  • 两者我都在使用 AdoptOpenJDK jdk-11.0.6.10-hotspot
  • 有时您在较新的 JVM 版本中遇到此运行较旧的 Java 代码,-noverify 不安全,将作为选项很快被删除 support.oracle.com/knowledge/Middleware/1291169_1.html,您可能应该尝试追踪无效的字节码让您的代码在没有 -noverify 的情况下运行

标签: java proguard install4j proguard-maven-plugin


【解决方案1】:

根据 Proguard 手册的Troubleshooting 部分,VerifyError 的建议是:

  • 检查 Proguard 错误数据库,如果这是一个新错误,请提交错误报告。
  • 尝试使用 Proguard 选项-dontoptimize

使用-noverify 运行 Java 应用程序是一种不安全的黑客攻击 ...但如果您真的需要这样做,您应该能够设置 Install4j生成的启动器中的 JVM 选项。

一个常见的要求是能够在安装完成后调整启动器的 VM 参数,或者在安装时根据目标平台等环境或安装程序中的某些用户选择来确定 VM 参数。

为此,将读取与可执行文件位于同一目录中的参数文件,并将其内容添加到固定 VM 参数列表中。该参数文件的名称与扩展名为.vmoptions的可执行文件相同。

更多详情;见The definitive guide to install4j

【讨论】:

    猜你喜欢
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-21
    • 1970-01-01
    • 2020-12-30
    • 1970-01-01
    相关资源
    最近更新 更多