jwrapper 以某种方式操纵应用程序 jar,并导致 jar 无法正常工作:在运行时它会抛出“MyClass cannot be cast to MyClass”类型错误。我相信这是由重新评估创建类加载器的代码引起的,导致加载 MyClass 类的多个实例。
jwrapper 文档没有描述对 jar 所做的更改,除了使用 pack200。我已经单独测试了pack200,它不会导致这个问题。
我还通过将 jwrapper 传递给“java -jar”,在不使用 wrapper 可执行文件的情况下测试了由 jwrapper 构建的 jar。所以这不是 jvm 转换,或者包装器正在做的任何其他事情:jar 本身已损坏。
更新:
jwrapper 允许跳过 pack200,但是安装文件很大。由于 pack200 在独立运行时工作,如果有某种方法可以告诉 jwrapper 文件已经打包,我可以解决这个问题。使用 <Pack200Exceptions> 没有帮助,因为它不知道文件已打包。