grails (11) vaadin (11) meteor (6) java (4) elasticsearch (3) apple (2) centos (1) cloudbees (1) google analytics (1) gradle (1) heroku (1) javafx (1) javascript (1) jdbc (1) jug (1) logback (1) logging (1) mac os (1) management (1) mongodb (1) mongolab (1) mysql (1) twitter (1) ubuntu (1)

Wednesday, October 21, 2015

Java 8 update 60 is causing "Apps that use non-public APIs will be rejected"

When you try to publish your JavaFX application into Mac App store with Java 1.8.0_60, you are going to get the following rejection.

The issue is that Your.app/Contents/PlugIns/Java.runtime/Contents/Home/jre/lib/libjfxwebkit.dylib libray is importing this library libicucore.A.dylib. And this issue is caused (probably) by this issue: Update to Newer Version of WebKit.

You can verify the issue by running otool for Java 1.8.0_51, 1.8.0_60 and 1.8.0_65. You will find that Java is importing that library since minor version 60.


There are 3 possible solutions.
  1. Remove libjfxwebkit.dylib from your application 
  2. If you need that library, downgrade to Java 1.8.0_51
  3. Wait after Packager cannot bundle Mac App Store Apps because JavaFX WebKit uses apple private APIs is resolved
------------------------------
Update 1:
I just got info by Martijn Verburg that these this is issue will be fixed: 
------------------------------
Update 2: 
I have got this info from mail group
The javapackager fix for JDK 8u72 does exactly this when generating .pkg files. So in short, libjfxwebkit.dylib is unchanged for 8u72, but will be excluded when generating an app for the Apple app store.
So, the solution is to remove libjfxwebkit.dylib from your .app (in case you package the