After the latest upgrade starting several of my Java-based
applications fails
(when I have changed the plist to say 1.6+). This includes IntelliJ,
Install4J
and DbVisualizer.
For example trying to start IntelliJ:
% open IntelliJ\ IDEA\ 7.0.5.app
LSOpenFromURLSpec() failed with error -10810 for the file /
Applications/Extra/IntelliJ IDEA 7.0.5.app.
if I try the launcher directly:
% ./IntelliJ\ IDEA\ 7.0.5.app/Contents/MacOS/idea
[JavaAppLauncher Warning] Java application launched from PPC or bad
stub. Relaunching in 32-bit, and tagging sub-processes to prefer 32-
bit with $JAVA_ARCH=i386.
[JavaAppLauncher Error] This process is [i386] and was re-exec'd
from [i386], but for some reason we are trying re-exec to [].
[JavaAppLauncher Error] unable to find a version of Java to launch
Why doesn't existing JavaAppLauncher's work with latest Java 1.6? I
know that I can
copy /System/Library/Frameworks/JavaVM.framework/Resources/MacOS/
JavaApplicationStub,
but this sound like a problem *may* users will run into after
upgrading to Update 4?
This is part of a change to the double-clickable app launching policy
(which we explained in detail in the developer preview release notes).
To enabled the Finder's "Run in 32-bit mode" checkbox for Java apps,
and to make the transition to 64-bit by default easier, we've modified
the JavaApplicationLauncher.framework to only launch application's in
the architectures they have present in their JavaApplicationStub.
This was done now for a variety of reasons: until Update 4, the
JavaApplicationStub and all apps that were bundled with it were 32-bit
Universal. Very few apps required 1.6 in their Info.plist, so now was
the best time to switch this policy. Applications with PPC or PPC/i386
stubs would continue to run in 32-bit mode indefinitely, until they
rebundled after Update 4, which would then opt them into launching 64-
bit (with the ability to downshift to 32-bit using the checkbox
Finder's Get Info window). This simplifies the rule down to "if you
don't have the architecture present, we won't launch you in it", which
is exactly the same rule for launching native Cocoa apps.
The thinking is that if you haven't rebundled, you likely haven't ever
considered that you'd be run in 64-bit mode (and when users have
dragged Java SE 6 to the top of their Java Preferences, they found
that some of their applications stopped working). By preventing apps
from being launched in 64-bit if they haven't rebundled, we can
maintain the widest compatibility, with a minor impact on developers
(and actually let them have a say in what their version and
architecture requirements are).
In your case, since you are manually modifying the Info.plist to 1.6+,
replacing the JavaApplicationStub is also required, since IntelliJ 7
was likely not expecting to be launched in 64-bit, and may contain
some 32-bit only native libraries.
Hope this explains what you are seeing,
Mike Swingler
Java Runtime Engineer
Apple Inc.
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Java-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden