使用spring roo 2项目自动完成AspectJ无法在eclipse中工作

时间:2018-03-11 09:41:49

标签: java eclipse maven aspectj spring-roo

我使用spring-roo-2.0.0.RC2创建了一个Spring Roo项目并将其导入eclipse。项目启动并正常工作,但是当我尝试从roo生成的aspectJ文件中访问某些方法时,我收到编译错误。这些方法无法访问,甚至不会出现在eclipse的自动完成中。对于编译器,这些方法不存在......

e.g。我有一个实体" Burst",我想坚持下去。因此我想使用一些可以在Burst_Roo_JavaBean.aj中找到的setter设置一些值。但是无法访问setter / getters。这是一个普遍的问题,我不知道为什么它不起作用。

我正在使用带有STS插件和AJDT的eclipse氧气。在项目上启用了AspectJ-Tooling和JDT编织。 eclipse-software 我也试过使用STS捆绑包,但也存在同样的问题。

Fist我认为这是我的日食安装的一般问题。但我创建了一个spring roo 1项目(spring-roo-1.3.2.RELEASE)并将其导入eclipse。一切正常,我可以利用roo生成的aspectJ-files。中的方法 Spring Roo v1显示了相同的行为。

这似乎是一个微不足道的问题:Autocompletion in Eclipse for Roo project 但是清理和更新没有帮助。

项目中是否有一些版本混乱?

请帮助,我不知道如何解决这个问题......

编辑: 我发现,我可以使用.aj文件中的方法,但只能在创建.aj文件的类中使用。例如我有一个域名" Burst"。我可以在那里创建一个方法,并使用通过.aj文件提供的方法,如" getVersion()"和所有其他方法。 但是当我创建一个类" MyClass"在同一个包中,我无法访问.aj文件中的方法。

Burst-Domain MyClass

更新(添加代码): 我选择了图片,因为我认为编译错误的位置和方式会更清楚。代码只是一个简单的域,getVersion()方法不是我编写的。它存在于Burst_Roo_JavaBean.aj的aspect文件中。我也加上这个......

Burst domain:

package de.larv.overseer.domain;
import java.time.LocalDateTime;

import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Version;

import org.springframework.roo.addon.javabean.annotations.RooEquals;
import org.springframework.roo.addon.javabean.annotations.RooJavaBean;
import org.springframework.roo.addon.javabean.annotations.RooToString;
import org.springframework.roo.addon.jpa.annotations.entity.RooJpaEntity;

@RooJavaBean
@RooToString
@RooJpaEntity
@RooEquals(isJpaEntity = true)
public class Burst {

    public void method() {
        Burst b = new Burst();
        b.getVersion();
    }
    /**
     * TODO Auto-generated attribute documentation
     *
     */
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    /**
     * TODO Auto-generated attribute documentation
     *
     */
    @Version
    private Integer version;

    private String pool;

}

Burst_Roo_JavaBean.aj

// WARNING: DO NOT EDIT THIS FILE. THIS FILE IS MANAGED BY SPRING ROO.
// You may push code into the target .java compilation unit if you wish to edit any member(s).

package de.larv.overseer.domain;

import de.larv.overseer.domain.Burst;
import java.time.LocalDateTime;

privileged aspect Burst_Roo_JavaBean {

    /**
     * TODO Auto-generated method documentation
     * 
     * @return Long
     */
    public Long Burst.getId() {
        return this.id;
    }

    /**
     * TODO Auto-generated method documentation
     * 
     * @param id
     */
    public void Burst.setId(Long id) {
        this.id = id;
    }

    /**
     * TODO Auto-generated method documentation
     * 
     * @return Integer
     */
    public Integer Burst.getVersion() {
        return this.version;
    }

    /**
     * TODO Auto-generated method documentation
     * 
     * @param version
     */
    public void Burst.setVersion(Integer version) {
        this.version = version;
    }

    /**
     * TODO Auto-generated method documentation
     * 
     * @return String
     */
    public String Burst.getPool() {
        return this.pool;
    }

    /**
     * TODO Auto-generated method documentation
     * 
     * @param pool
     */
    public void Burst.setPool(String pool) {
        this.pool = pool;
    }

}

MyClass(编译错误):

package de.larv.overseer.domain;

public class MyClass {
    public void method() {
        Burst b = new Burst();
        b.getVersion();
    }
}

0 个答案:

没有答案