maven项目的编译问题

时间:2013-11-15 22:12:34

标签: scala maven compilation

我有两个maven项目 - 一个图书馆和一个小程序。它们位于不同的文件夹中并使用不同的pom.xml,并且库的jar文件包含在小程序的pom.xml中,使用以下插件:

<groupId>com.googlecode.addjars-maven-plugin</groupId>
<artifactId>addjars-maven-plugin</artifactId>

和绝对路径:

<resource><directory>/path/to/jars</directory></resource>

这工作正常,但在两个项目中突然使用与之前相同的代码,小程序不再编译。图书馆仍然编写得很好。 (使用mvn package -Dmaven.test.skip=true

错误信息不是很清楚:

[ERROR] error: error while loading <root>, error in opening zip file
[ERROR] error: scala.reflect.internal.MissingRequirementError: object scala.runtime in compiler mirror not found.
[ERROR]     at scala.reflect.internal.MissingRequirementError$.signal(MissingRequirementError.scala:16)
[ERROR]     at scala.reflect.internal.MissingRequirementError$.notFound(MissingRequirementError.scala:17)
...
[ERROR] error: fatal error: object scala.runtime in compiler mirror not found.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 9.935s
[INFO] Finished at: Fri Nov 15 22:39:11 CET 2013
[INFO] Final Memory: 9M/67M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.scala-tools:maven-scala-plugin:2.15.0:compile (default) on project testprogram: wrap: org.apache.commons.exec.ExecuteException: Process exited with an error: 1(Exit value: 1) -> [Help 1]

我在Google上做了一些关于错误消息的研究,似乎这可能是由于缺少或损坏的.jar文件引起的。我没有看到与此案例的关系,因为我在工作和非工作案例中都有相同的代码和导入。

编辑:添加更多信息:库正在使用junixsocket,并且包含.jar的方式与程序包含库的方式相同。似乎问题只出现在这部分存在的时候才出现。

3 个答案:

答案 0 :(得分:0)

整理Maven在做什么以及为什么这样做的两个关键帮助因素是:

mvn help:effective-pom-这将生成一个pom文件,其中包含所有已解析的属性和描述的所有任务-其中包括默认文件

mvn -X-调试maven执行将生成很多信息。

我通常将mvn -X定向到文本文件,然后寻找错误附近的关键字。我使用有效的pom来帮助我弄清楚它如何获得价值。

如果找不到必要的情况,路径问题通常是此类问题中的问题。

答案 1 :(得分:0)

在maven编译期间打开zip文件可能会引发,因为maven编译器pliugin试图在编译期间将jar暴露在类路径中。如果是这样,您可以检查您的.m2 /存储库是否已损坏。

您可以做的另一项检查是读取pom中是否有指向特定文件夹的插件,该插件提供了特定的库,因此还原该文件夹中的库应该可以解决您的问题

答案 2 :(得分:0)

可能是Java版本> 8引起的,请尝试使用Java 8。