Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

maven doesn't find class

Tags:

java

maven

I've inherited a huge maven java project and can't get it to compile.

mvn compile

Its telling me it can't find a class even though its right there in the local repo.

Failed to execute goal org.codehaus.enunciate:maven-enunciate-plugin:1.25:assemble (default) on project VCWH_Core_QueryService: Execution default of goal org.codehaus.enunciate:maven-enunciate-plugin:1.25:assemble failed: A required class was missing while executing org.codehaus.enunciate:maven-enunciate-plugin:1.25:assemble: com/sun/mirror/apt/AnnotationProcessorFactory

Here is the pom.xml snippet that tells it where to look:

 <dependency>
  <groupId>com.sun</groupId>
  <artifactId>tools</artifactId>
  <version>1.7</version>
 </dependency>

And sure enough, tools-1.7.jar and tools-1.7.pom are located in the local repo at

\.m2\repository\com\sun\tools\1.7

And if I look inside the jar with jar tf tools-1.7.jar I can see class

com/sun/mirror/apt/AnnotationProcessorFactory.class

I also blew away the sun folder in my local repo and did a "Clean and Build" in NetBeans and watched the sun folder come back into my local repo, so I know the connectivity to the remote repo is good.

Why can't it find it?

like image 921
user3217883 Avatar asked Nov 14 '15 02:11

user3217883


3 Answers

The jar file is located in the wrong folder compared to the coordinates you are using for the dependency. Maven would not look in your location. The correct path would be .m2/repository/com/sun/mirror/apt/apt-mirror-api/0.1/apt-mirror-api-0.1.jar.

The local repository you have created is invalid. I would suggest to instead use a repository manager like Nexus and upload the jars there and then get Maven to download from there. This way you get pom files created and the structure will be automatically correct compared to the GAV coordinates you use.

like image 161
Manfred Moser Avatar answered Sep 28 '22 15:09

Manfred Moser


try mvn clean compile -U OR mvn clean install -U

like image 44
chenrongrong Avatar answered Sep 28 '22 15:09

chenrongrong


Need to add this to the maven-enunciate-plugin:

                        <dependencies>
                            <dependency>
                                <groupId>com.sun</groupId>
                                <artifactId>tools</artifactId>
                                <version>1.7</version>
                                <scope>system</scope>
                                <systemPath>C:\Program Files\Java\jdk1.7.0_79\lib\tools.jar</systemPath>
                                <optional>true</optional>
                            </dependency>
                        </dependencies>

Now it looks like this:

<plugin>
                <groupId>org.codehaus.enunciate</groupId>
                <artifactId>maven-enunciate-plugin</artifactId>
                <version>1.25</version>
                <configuration>
                    <configFile>${basedir}/src/main/webapp/WEB-INF/enunciate.xml</configFile>
                    <compileDebug>false</compileDebug>
                    <addGWTSources>false</addGWTSources>
                    <addActionscriptSources>false</addActionscriptSources>
                </configuration>
                <dependencies>
                    <dependency>
                    <groupId>com.sun</groupId>
                    <artifactId>tools</artifactId>
                    <version>1.7</version>
                    <scope>system</scope>
                    <systemPath>C:\Program Files\Java\jdk1.7.0_79\lib\tools.jar</systemPath>
                    <optional>true</optional>
                    </dependency>
                </dependencies>

                <executions>
                    <execution>
                        <goals>
                            <goal>assemble</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

And then Downgraded to java 7 from 8.

like image 29
user3217883 Avatar answered Sep 28 '22 17:09

user3217883