我继承了一个巨大的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文件夹返回到我的本地仓库,所以我知道远程仓库的连接性很好。
为什么不能找到它?
答案 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 -U
或mvn clean install -U
答案 2 :(得分:0)
去你的m2 repository.delete所有的罐子。
执行mvn clean install
。
如果您正在使用eclipse,请执行project clean
。right 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)
对我来说解决方案是:
mvn clean install
(4)
答案 5 :(得分:-1)
首先,仔细检查文件中是否有正确的Maven坐标(groupId,artifactId和version)。寻找错别字。
-
这可能是由腐败的本地Maven回购引起的。您可以通过以下步骤解决它。
选项1:
在您的项目上,右键单击:Maven&gt;更新项目
在对话框中,选中复选框:强制更新快照/版本
点击确定
Maven将执行重建。
如果这没有解决您的问题,请转到选项2
选项2:
在MS Windows上
任一
C:\ Documents and Settings \ .m2
C:\用户\ .m2目录
在Mac / Linux上
〜/ .m2目录
-
请注意,在您的操作系统上,您可能需要配置操作系统以显示隐藏文件。
删除.m2目录后,重启Eclipse
在您的项目上,右键单击:Maven&gt;更新项目
这将解决您的问题。