Spring找不到AspectJ包

3

我开始学习Spring,尝试在Spring 3.2中使用AspectJ技术。我正在跟随书籍《Spring实战》的指导。作者通过以下方式导入AspectJ包来使用AspectJ:

import org.aspectj.lang.annotation.Aspect

然而,使用那个会让我面临着……
package org.aspectj.lang.annotation does not exist

我尝试将 aspectj.jar (版本1.8.4)导入到NetBeans的库中,但没有任何效果。我将这个jar放在几十个SPRING FRAMEWORK 3.2.3 RELEASE xxxxxx's下面,但它仍然找不到该包。有什么可能导致这个问题?下面是我的beans.xml开头。

    <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.2.xsd
" xmlns:util="http://www.springframework.org/schema/util">

    <context:component-scan base-package="heyspring">

    </context:component-scan>

    <aop:aspectj-autoproxy>
2个回答

6

我建议您转向使用Maven。

即使您想不使用Maven工作,也请仔细阅读以下说明。

注意:即使在Maven中央库中,您也可以根据下面共享的依赖关系下载所需的jars

请务必确保您的pom.xml等效jars文件中拥有以下内容:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-aop</artifactId>
    <version>${springframework.version}</version>
</dependency>

以下内容是必须的
<dependency>
    <groupId>org.aspectj</groupId>
    <artifactId>aspectjrt</artifactId>
    <version>${aspectj.version}</version>
</dependency>
<dependency>
    <groupId>org.aspectj</groupId>
    <artifactId>aspectjweaver</artifactId>
    <version>${aspectj.version}</version>
</dependency>

当然,你需要为Spring和AOP设置或配置每个版本。
我有这三个依赖项,并在我的项目中正常工作。

1
我有一个Spring Boot项目,曾经遇到同样的问题。之前我在maven依赖中添加了'aspectjweaver',现在我在pom文件中加入了'aspectjrt' devpendency,问题就解决了。感谢@Manuel Jordan。 - rajesh

1

我在从Maven仓库(https://mvnrepository.com/artifact/org.aspectj/aspectjrt/1.9.9.1)复制时,使用了<scope>标签,这就是原因。


    <dependency>
      <groupId>org.aspectj</groupId>
      <artifactId>aspectjrt</artifactId>
      <version>1.9.9.1</version>
<!--      <scope>runtime</scope>-->
    </dependency>


    <!-- https://mvnrepository.com/artifact/org.aspectj/aspectjweaver -->
    <dependency>
      <groupId>org.aspectj</groupId>
      <artifactId>aspectjweaver</artifactId>
      <version>1.9.9.1</version>
<!--      <scope>runtime</scope>-->
    </dependency>

我注释掉了 <scope>...</scope> 标签,这个标签可能只是针对 runtime 的,所以 IDE 找不到它的存储库。 删除后它就开始工作了,或者我们可以添加 compile


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