maven找不到课

时间:2015-11-14 02:14:39

标签: java maven

我继承了一个巨大的maven java项目,无法将其编译。

mvn compile

它告诉我它找不到一个班级,即使它在当地的回购中也是如此。

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

这是pom.xml片段,告诉它在哪里看:

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

果然,tools-1.7.jar和tools-1.7.pom位于本地仓库

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

如果我看着罐子里面 jar tf tools-1.7.jar 我可以看到  班级

com/sun/mirror/apt/AnnotationProcessorFactory.class

我还在我的本地仓库中删除了sun文件夹,并在NetBeans中执行了“清理和构建”,并观看了sun文件夹返回到我的本地仓库,所以我知道远程仓库的连接性很好。

为什么不能找到它?

6 个答案:

答案 0 :(得分:1)

与您用于依赖项的坐标相比,jar文件位于错误的文件夹中。 Maven不会看你的位置。正确的路径是.m2 / repository / com / sun / mirror / apt / apt-mirror-api / 0.1 / apt-mirror-api-0.1.jar。

您创建的本地存储库无效。我建议改为使用像Nexus这样的存储库管理器并将jar文件上传到那里,然后让Maven从那里下载。通过这种方式,您可以创建pom文件,并且与您使用的GAV坐标相比,结构将自动更正。

答案 1 :(得分:0)

尝试mvn clean compile -Umvn clean install -U

答案 2 :(得分:0)

去你的m2 repository.delete所有的罐子。

执行mvn clean install

如果您正在使用eclipse,请执行project cleanright click project->maven->update project

答案 3 :(得分:0)

需要将其添加到maven-enunciate-plugin:

<?php

    $blacklist = array("one.jps", "two.txt", "four.html" , ".txt");
    $files = array_diff(glob("*.*"), $blacklist);

    foreach($files as $file)
        echo "<div class='post'><a href='" . $_SERVER['PHP_SELF'] . "?file=" . $file . "'><p>" . $file . "</p></a></div>";


    if(!empty($_GET["file"]) && !in_array($_GET["file"], $blacklist) && file_exists($_GET["file"])) 
        $thesource = htmlentities(file_get_contents($_GET["file"]));

?>

现在看起来像这样:

                        <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>

但是,现在出现了一个新错误:

<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>

任何人都知道如何解决这个问题?

答案 4 :(得分:0)

对我来说解决方案是:

  • 重新导入所有Maven项目(1)
  • 拉底(2-3)
  • mvn clean install(4)

All points showed into this image

答案 5 :(得分:-1)

首先,仔细检查文件中是否有正确的Maven坐标(groupId,artifactId和version)。寻找错别字。

-

这可能是由腐败的本地Maven回购引起的。您可以通过以下步骤解决它。

选项1:

  1. 在您的项目上,右键单击:Maven&gt;更新项目

  2. 在对话框中,选中复选框:强制更新快照/版本

  3. 点击确定

  4. Maven将执行重建。

    如果这没有解决您的问题,请转到选项2

    选项2:

    1. 删除您当地的Maven仓库,计算机上的.m2目录
    2. 在MS Windows上

      任一
      C:\ Documents and Settings \ .m2 C:\用户\ .m2目录

      在Mac / Linux上

      〜/ .m2目录

      -

      请注意,在您的操作系统上,您可能需要配置操作系统以显示隐藏文件。

      1. 删除.m2目录后,重启Eclipse

      2. 在您的项目上,右键单击:Maven&gt;更新项目

      3. 这将解决您的问题。