> On Sep 20, 2022, at 5:50 PM, Michael Hall <mik3h...@gmail.com> wrote:
> 
> Still you could use post-processing to add whatever java binary executable 
> commands you wanted. This again would mean changes to the embedded jdk that 
> might have signing side effects. I haven’t tested.  

Thinking about this I looked at my application that includes java commands and 
saw that currently I include all. And all appear to be of fixed size. So I 
assume some kind of launcher stub?

I then remembered 

[macos]: App bundle cannot upload to Mac App Store due to info.plist embedded 
in java exe
https://bugs.openjdk.org/browse/JDK-8286122 
<https://bugs.openjdk.org/browse/JDK-8286122>

The bug being due…
> ITMS-90511: CFBundleIdentifier Collision - The Info.plist CFBundleIdentifier 
> value 'net.java.openjdk.java' of 'java' is already in use by another 
> application. 
This because the launcher stub includes it’s own Info.pliat’s always using the 
same CFBundleIdentifier

If I understand the resolution correctly…
https://github.com/openjdk/jdk17u-dev/commit/6a4b6220f8dc184f408f1295865ed0ad2e3710ca
 
<https://github.com/openjdk/jdk17u-dev/commit/6a4b6220f8dc184f408f1295865ed0ad2e3710ca>

This effectively prohibits jpackage applications going to the App Store from 
using java native commands by disallowing the jlink option.
I realize this issue is closed and probably not yours to resolve.

But wouldn’t it be possible to simply make the CFBundleIdentifier unique?
Maybe a hash of command name and application name, something like…
Hash(“java”+”MyCommandUsingMacAppStoreApp”)

I don’t think the identifiers for the embedded commands need to be meaningful 
to the developer or anyone else. A good hash should pretty much eliminate 
collisions.

My apologies if I’m simply repeating something dismissed in prior discussion.


Reply via email to