【问题标题】:Problem with compilation for maven projectmaven项目的编译问题
【发布时间】:2013-11-29 11:07:37
【问题描述】:

我有两个 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 的方式与程序包含该库的方式相同。好像只有这部分存在时才会出现问题。

【问题讨论】:

  • 一般提示: - 确保父项目有可用的 Scala 运行时库(不仅仅是子项目) - 考虑使用 SBT(在开发 Scala 时,它通常比 Maven 更好地处理 Scala 运行时和其他库代码)
  • 也许您遇到了 IDE 问题 - 关闭第一个项目并重试构建。您也可以真正删除 .m2 文件夹中的文件以确保...
  • jar文件现在可以了吗?可以正确解压吗? (它可能已经被 git 或非二进制文件传输或类似管理)

标签: scala maven compilation


【解决方案1】:

整理 maven 在做什么以及为什么这样做的两个关键助手是:

mvn help:effective-pom - 这会生成一个 pom 文件,其中所有属性都已解析并描述了所有任务 - 这包括默认值

mvn -X - debug maven 执行会产生很多信息。

我通常将 mvn -X 指向一个文本文件,然后寻找错误周围的关键字。我使用有效的 pom 来帮助我弄清楚它是如何获取值的。

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

【讨论】:

    【解决方案2】:

    在 maven 编译期间打开一个 zip 文件可能会被抛出,因为 maven 编译器插件试图在编译期间爆炸一个 jar 以在类路径中公开。如果是这样,您可以检查您的 .m2/repository 是否已损坏。

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

    【讨论】:

      【解决方案3】:

      可能是java版本> 8造成的,用java 8试试吧。

      【讨论】:

        猜你喜欢
        • 2021-06-25
        • 2016-10-27
        • 2020-07-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-04
        • 2018-04-03
        相关资源
        最近更新 更多