RFR: 8351073: [macos] jpackage produces invalid Java runtime DMG bundles [v4]

Alexey Semenyuk asemenyuk at openjdk.org
Tue Jul 15 02:33:58 UTC 2025


On Tue, 15 Jul 2025 02:15:56 GMT, Alexander Matveev <almatvee at openjdk.org> wrote:

>> Maybe run jpackage with `--verbose` flag?
>
> [19:14:45.620] jdk.jpackage.internal.model.PackagerException: java.lang.ClassCastException: class com.sun.proxy.jdk.proxy1.$Proxy0 cannot be cast to class jdk.jpackage.internal.MacApplicationLayout (com.sun.proxy.jdk.proxy1.$Proxy0 is in module jdk.proxy1 of loader 'app'; jdk.jpackage.internal.MacApplicationLayout is in module jdk.jpackage of loader 'app')
> 	at jdk.jpackage/jdk.jpackage.internal.PackagingPipeline.execute(PackagingPipeline.java:487)
> 	at jdk.jpackage/jdk.jpackage.internal.PackagingPipeline.execute(PackagingPipeline.java:68)
> 	at jdk.jpackage/jdk.jpackage.internal.PackagerBuilder.execute(PackagerBuilder.java:67)
> 	at jdk.jpackage/jdk.jpackage.internal.MacDmgPackager$Builder.execute(MacDmgPackager.java:81)
> 	at jdk.jpackage/jdk.jpackage.internal.MacDmgBundler.execute(MacDmgBundler.java:80)
> 	at jdk.jpackage/jdk.jpackage.internal.Arguments.executeBundler(Arguments.java:741)
> 	at jdk.jpackage/jdk.jpackage.internal.Arguments.generateBundle(Arguments.java:702)
> 	at jdk.jpackage/jdk.jpackage.internal.Arguments.processArguments(Arguments.java:553)
> 	at jdk.jpackage/jdk.jpackage.main.Main.execute(Main.java:93)
> 	at jdk.jpackage/jdk.jpackage.main.Main.main(Main.java:54)
> Caused by: java.lang.ClassCastException: class com.sun.proxy.jdk.proxy1.$Proxy0 cannot be cast to class jdk.jpackage.internal.MacApplicationLayout (com.sun.proxy.jdk.proxy1.$Proxy0 is in module jdk.proxy1 of loader 'app'; jdk.jpackage.internal.MacApplicationLayout is in module jdk.jpackage of loader 'app')
> 	at jdk.jpackage/jdk.jpackage.internal.MacPackagingPipeline.signApplicationBundle(MacPackagingPipeline.java:367)
> 	at jdk.jpackage/jdk.jpackage.internal.PackagingPipeline$DefaultTaskContext.execute(PackagingPipeline.java:571)
> 	at jdk.jpackage/jdk.jpackage.internal.MacPackagingPipeline$TaskContextProxy.execute(MacPackagingPipeline.java:541)
> 	at jdk.jpackage/jdk.jpackage.internal.PackagingPipeline.lambda$createTask$0(PackagingPipeline.java:604)
> 	at jdk.jpackage/jdk.jpackage.internal.pipeline.TaskPipelineBuilder$SequentialWrapperTask.call(TaskPipelineBuilder.java:130)
> 	at jdk.jpackage/jdk.jpackage.internal.pipeline.TaskPipelineBuilder$SequentialWrapperTask.call(TaskPipelineBuilder.java:121)
> 	at jdk.jpackage/jdk.jpackage.internal.PackagingPipeline.execute(PackagingPipeline.java:480)
> 	... 9 more
> java.lang.ClassCastException: class com.sun.proxy.jdk.proxy1.$Proxy0 cannot be cast to class jdk.jpackage.internal.MacApplicationLayout (com.sun.proxy.jdk.proxy1.$Proxy0 is in module jdk.proxy1 of loader 'a...

Try to change the signature from

private static void signApplicationBundle(AppImageBuildEnv<MacApplication, MacApplicationLayout> env) throws IOException


to

private static void signApplicationBundle(AppImageBuildEnv<MacApplication, AppImageLayout> env) throws IOException


I guess if you change the signature or the original `sign()` from:

void sign(AppImageBuildEnv<MacApplication, MacApplicationLayout> env) throws IOException

to

void sign(AppImageBuildEnv<MacApplication, AppImageLayout> env) throws IOException

and use it instead of `signRuntimeBundle()` and `signApplicationBundle()` it will work too.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/26173#discussion_r2206154942


More information about the core-libs-dev mailing list