两个Maven错误 - 'Type Cannot Be Resolved' + 缺少aspect weaver.1.8.0.M1

4

我有一个现有的MVM项目,在尝试构建时遇到了两个错误,不确定如何解决。

首先是主要的错误

[ERROR] Failed to execute goal org.codehaus.mojo:aspectj-maven-plugin:1.5:compile (default) on project ws: Compiler errors:
The type java.util.Comparator cannot be resolved. It is indirectly referenced from required .class files

这个问题困扰了我一段时间,因为它来自于主要的JRE,我不确定这个错误是什么意思。我是从命令行构建的,而不是通过Eclipse或其他IDE。大多数网络上的答案似乎都是基于在Eclipse项目构建路径中放置JRE。

我安装了Java 1.8,在OSX上运行。我的Java源代码和目标版本是1.7。

第二个是一个警告,我并不是很在意,但如果可能的话,我想要将其删除:

[WARNING] The POM for org.aspectj:aspectjweaver:jar:1.8.0.M1 is missing, no dependency information available

我认为这来自于我所依赖的Spring-Aspects-4.0版本,我已经在POM中显式设置了稳定版本1.7.4。

是否有任何方法可以消除此警告,或者我需要在我的POM中添加1.8.0.M1依赖项,而我不想这么做。

2个回答

12

经过一番尝试之后,似乎问题是由于构建环境安装了JDK 8,并且aspectjweaver版本不兼容导致的。

因此有两个解决方案:

  1. 安装JDK7并在构建之前将其设置为JAVA_HOME。

或者

  1. 将源/目标设置为1.8,将aspectjweaver设置为1.8.1版本即可解决问题。

错误信息不够清晰,但现在已解决。


1
这很有帮助,我需要为一个旧应用程序生成1.6源代码。因此,我还为aspectj插件保留了<complianceLevel>1.6</complianceLevel>。 - Alex Pi

0

在使用maven构建项目时,我遇到了同样的问题。

[ERROR] The type java.lang.RuntimeException cannot be resolved. It is indirectly referenced from required .class files

我已经安装了Java 1.8和Java 17,在运行MacOS M1上,源+目标版本设置为1.8,aspect weaver complianceLevel设置为1.8

我运行以下命令查看我的机器上安装的JDK: /usr/libexec/java_home -V,输出如下:

Matching Java Virtual Machines (3):

17 (arm64) "Oracle Corporation" - "Java SE 17" /Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home
15.0.2 (x86_64) "AdoptOpenJDK" - "AdoptOpenJDK 15" /Library/Java/JavaVirtualMachines/adoptopenjdk-15.jdk/Contents/Home
1.8.0_312 (x86_64) "Amazon" - "Amazon Corretto 8" /Library/Java/JavaVirtualMachines/corretto-1.8.0_312/Contents/Home`

这是因为我的环境没有正确设置。我将JAVA_HOME指向了JDK 17。

java -version

java version "17" 2021-09-14 LTS Java(TM) SE Runtime Environment (build 17+35-LTS-2724) Java HotSpot(TM) 64-Bit Server VM (build 17+35-LTS-2724, mixed mode, sharing)

在运行以下命令后,我成功地编译和构建了我的项目:

unset JAVA_HOME

export JAVA_HOME=$(/usr/libexec/java_home -v "1.8.0_312")


你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心中找到有关如何编写良好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接