If you are distributing JRE with your application and you happen to also distribute tools.jar
as well. The you have probably copied tools.jar
to the jre/lib/ext folder.
This is viable option and have worked for me in the past (i.e. with Java 5 and Java 6). However this does not work in Java 7. If you do this in Java 7 you won’t get system compiler instance for example (i.e. executing code javax.tools.ToolProvider.getSystemJavaCompiler()
will return null
)
What I found out (painfully) that in Java 7 you have to put tools.jar
directly to the jre/lib folder!!!
When you do this you can execute javax.tools.ToolProvider.getSystemJavaCompiler()
and get a compiler instance as expected.
Updated (2012-07-10):
Oracle has accepted bug report for this problem. You can see it in Oracle’s bug database as 7181951.
Updated (2012-07-14):
Oracle has closed the bug with the following evaluation:
Closing as not a bug. That behavior was neither specified nor intended.
Posted Date : 2012-07-13 15:57:50.0
So I guess it means that the only true place for tools.jar
is the jre/lib folder!