<i18n dev> RFR 9 7131356 : (props) "No Java runtime present, requesting install" when creating VM from JNI [macosx]

Brent Christian brent.christian at oracle.com
Mon Jun 20 22:44:32 UTC 2016

Alex - thanks for your response.  More below...

On 6/13/16 4:51 PM, Alex Strange wrote:
>> 2. In "setupMacOSXLocale" we simply drop the call to
>> "JRSSetDefaultLocalization" as it appears to be a NOP. According to
>> Apple, that API sets up native bundle locale, so that any access to
>> native Cocoa UI (like FileOpenChooser) uses localized strings.
>> Testing shows that this does not seem to work even in Apple's own
>> JDK (ie. JDK 6), so dropping the call to this SPI here does not
>> result in a regression.  An issue was filed to investigate further
>> (8024279, a dup of 8019464) which has since been closed as, "Not an
>> Issue".
> This was added a very long time ago so that 'java -jar x.jar' would
> show properly localized menus in the menubar, instead of English
> menus, on a non-English system. It might no longer be a problem.

OK, thanks.

'java -jar x.jar' behavior is unchanged with this patch.  (From the bug 
report, it hasn't worked since JDK 7).

>> 3. In "setOSNameAndVersion", re-implement JRSCopyOSVersion using
>> [NSProcessInfo operatingSystemVersion].  (Use of JRSCopyOSName was
>> already removed by 7178922).
> You shouldn't need to use objc_msgSend_stret here. If you're not
> getting a warning when you use @selector in the line above, you
> should just be able to call -operationgSystemVersion directly inside
> the if.
> If you are getting a warning, it'd be best to declare the selector
> yourself somewhere higher up:
> typedef struct {
>         NSInteger majorVersion;
>         NSInteger minorVersion;
>         NSInteger patchVersion;
> } OSVerStruct;
> @interface NSProcessInfo ()
> - (OSVerStruct)operatingSystemVersion;
> @end

Thanks - this works for building w/ the 10.9 SDK (the officially 
supported Mac SDK for building JDK).

But I believe people also build w/ the 10.10 SDK (I've not tried it 
myself).  Won't this cause problems, since NSProcessInfo already has 
"operatingSystemVersion", and it returns an NSOperatingSystemVersion, 
not an OSVerStruct ?

I'd prefer something that can build on SDK 10.9 and 10.10, etc.  Once 
the official build moves to 10.10/later, objc_msgSend() can be removed 
and we can use [NSProcessInfo operatingSystemVersion] directly.


More information about the i18n-dev mailing list