You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Jesse Glick (JIRA)" <ji...@codehaus.org> on 2011/04/05 16:14:23 UTC

[jira] Commented: (MCOMPILER-144) Using compiler API instead of tools.jar

    [ http://jira.codehaus.org/browse/MCOMPILER-144?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=262535#action_262535 ] 

Jesse Glick commented on MCOMPILER-144:
---------------------------------------

The JRE does indeed include an API for invoking the Java compiler - but the implementation is still in {{tools.jar}}, so calling it from a bare JRE will just produce an error. Also the API is not available in Java 5 which Maven still supports (for running itself).

On the other hand, it would be possible to publish the version of javac in OpenJDK 6 and/or 7 in Central and then use this as a runtime-scope dependency for the compiler plugin. This would also allow your project to determine exactly which compiler it is using, rather than being at the mercy of the user's JDK; see my Aug 2010 comments in MNG-1867. The version from OpenJDK 6 is probably unusable since AFAIK bug fixes from JDK 6 updates do not get backported to it; the version from OpenJDK 7 is much better and contains many critical fixes especially for people using annotation processors (see e.g. MCOMPILER-122).

> Using compiler API instead of tools.jar
> ---------------------------------------
>
>                 Key: MCOMPILER-144
>                 URL: http://jira.codehaus.org/browse/MCOMPILER-144
>             Project: Maven 2.x Compiler Plugin
>          Issue Type: New Feature
>            Reporter: Markus KARG
>            Priority: Minor
>
> Currently (MVN 3.0) java compilation needs tools.jar provided by the Sun JDK:
> [ERROR] Unable to locate the Javac Compiler in:
> [ERROR] C:\Program Files\Java\jre6\..\lib\tools.jar
> [ERROR] Please ensure you are using JDK 1.4 or above and
> [ERROR] not a JRE (the com.sun.tools.javac.Main class is required).
> [ERROR] In most cases you can change the location of your Java
> [ERROR] installation by setting the JAVA_HOME environment variable.
> In fact, this is bad because (a) it assumes that a full JDK is installed just for this sole tool where a JRE would be sufficient, (b) tools.jar is not contained in any standards documents and such possibly is not existing on future or non-sun JDK.
> Since JRE 6 (i. e. for many years) the JRE (not JDK!) comes with a standardized (!) API for compilation: The Java Compiler API. It would make sense to use that standardized API instead of forcing the user to have Sun JDK installed.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira