Yes, the message says that "JDevJavaCompiler ... cannot access ... com.sun.tools.javac.api.JavacTool"

and indeed, com.sun.tools.javac.api is not a supported public API. Here's the standard comment from the head of the file:

 * <p><b>This is NOT part of any supported API.
 * If you write code that depends on this, you do so at your own
 * risk.  This code and its internal interfaces are subject to change
 * or deletion without notice.</b></p>

If you want to break through the module boundaries, you'll have to use -XaddExports.

-- Jon

On 10/07/2015 06:12 PM, Mandy Chung wrote:
ToolProvider.getSystemJavaCompiler() will return the system compiler (javac) 
from the image.   Is there any reason why you can’t use that?

It seems to me that the exception is thrown because 
com.sun.tools.javac.api.JavacTool member is called.

Mandy

On Oct 7, 2015, at 6:01 PM, Keimpe Bronkhorst <keimpe.bronkho...@oracle.com> 
wrote:

The underlying exception I get is:
"Class oracle.jdevimpl.javacompiler.JDevJavaCompiler can not access a member of class 
com.sun.tools.javac.api.JavacTool (module jdk.compiler) with modifiers "public static", module 
jdk.compiler does not export com.sun.tools.javac.api to <unnamed module @1cfeea20>"

Will there be a "public API" way to run JSR199 of any JDK9 installation?

Keimpe Bronkhorst
JDeveloper

On 10/7/2015 6:54 PM, Keimpe Bronkhorst wrote:
It is possible in JDK8 and before to run JSR199 compilations using a class loader 
that loads from tools.jar. I can't do something similar in JDK9 using a new jigsaw 
build, trying to load from jrt-fs.jar. I get this: Warning: Cannot use jsr199 Javac 
from jrt-fs.jar".

Does this mean you can only use the JSR199 as provided by 
ToolProvider.getSystemJavaCompiler() of the current process in JDK9?

Keimpe Bronkhorst
JDeveloper

Reply via email to