Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

maven-enunciate-plugin on java 1.8 as apt now removed from latest JDK (i.e. java annotation processing tool)

Question is how to get java 1.8 and maven-enunciate-plugin to work together ?

With maven plugin org.codehaus.enunciate version 1.29 and OSX JDK 1.7.0_25 all is good. Enunciate depends on apt and I see this runtime warning in 1.7.0_25

[INFO] invoking enunciate:generate step...

warning: The apt tool and its associated API are planned to be removed in the next major JDK release. These features have been superseded by javac and the standardized annotation processing API, javax.annotation.processing and javax.lang.model. Users are recommended to migrate to the annotation processing features of javac; see the javac man page for more information.

When change to 1.8.0_05 build fails ...

apt is indeed gone, hence runtime errors regarding com.sun.mirror.apt.AnnotationProcessorFactory not found.

mvn install -pl myProject -e -X

...

<snip>
urls[46] = file:/Users/k1/.m2/repository/org/codehaus/enunciate/enunciate-xml/1.29/enunciate-xml-1.29.jar
urls[47] = file:/Users/k1/.m2/repository/org/codehaus/enunciate/enunciate-java-client/1.29/enunciate-java-client-1.29.jar
urls[48] = file:/Users/k1/.m2/repository/org/codehaus/enunciate/enunciate-c/1.29/enunciate-c-1.29.jar
urls[49] = file:/Users/k1/.m2/repository/org/codehaus/enunciate/enunciate-obj-c/1.29/enunciate-obj-c-1.29.jar
urls[50] = file:/Users/k1/.m2/repository/org/codehaus/enunciate/enunciate-csharp/1.29/enunciate-csharp-1.29.jar
urls[51] = file:/Users/k1/.m2/repository/org/codehaus/enunciate/enunciate-ruby/1.29/enunciate-ruby-1.29.jar
urls[52] = file:/Users/k1/.m2/repository/org/codehaus/enunciate/enunciate-php/1.29/enunciate-php-1.29.jar
Number of foreign imports: 1
import: Entry[import  from realm ClassRealm[maven.api, parent: null]]

-----------------------------------------------------

    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:165)
    ... 20 more
Caused by: java.lang.NoClassDefFoundError: com/sun/mirror/apt/AnnotationProcessorFactory
    at org.codehaus.enunciate.DocsMojo.loadMavenSpecificEnunciate(DocsMojo.java:107)
    at org.codehaus.enunciate.ConfigMojo.execute(ConfigMojo.java:326)
    at org.codehaus.enunciate.DocsMojo.execute(DocsMojo.java:81)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:133)
    ... 20 more
Caused by: java.lang.ClassNotFoundException: com.sun.mirror.apt.AnnotationProcessorFactory
    at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:259)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:235)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:227)
    ... 24 more
[ERROR] 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginContainerException
like image 803
k1eran Avatar asked May 28 '14 16:05

k1eran


1 Answers

EDIT July 2015: This original question and this answer were written when Enunciate 1.x was the latest. Though 1.x still doesn't support java 1.8, as described in comments below, 2.0 M-1, now does have limited support for java 1.8, i.e. documentation generated but not API modules.

As recommended by @bmargulies I looked at JIRA page (which I guess I should have done in first place!) Paraphrasing JIRA ENUNCIATE-701

" No timeline yet for Enunciate / JDK8 compatibility."

Enunciate has moved to Github; the issue there is #68

like image 157
k1eran Avatar answered Nov 16 '22 02:11

k1eran