在“JBoss工具项目验证程序”

时间:2015-10-23 11:58:23

标签: java eclipse maven jboss

我正在使用 Eclipse Kepler Service Release 2 ,因为大约一周我遇到了 JBoss Tools Project Validator 的问题。清理项目时会出现问题。

查看日志,它看起来像一个循环依赖:

  org.eclipse.jdt.internal.core.SourceType.getPackageFragment中的

java.lang.StackOverflowError(SourceType.java:427)     在   org.eclipse.jdt.internal.core.NamedMember.getFullyQualifiedName(NamedMember.java:183)     在   org.eclipse.jdt.internal.core.SourceType.getFullyQualifiedName(SourceType.java:272)     在   org.eclipse.jdt.internal.core.SourceType.getFullyQualifiedName(SourceType.java:265)     在   org.jboss.tools.common.java.ParametedType.equals(ParametedType.java:161)     在   org.jboss.tools.common.java.ParametedType.isAssignableTo(ParametedType.java:380)     在   org.jboss.tools.common.java.ParametedType.areTypeParametersAssignableTo(ParametedType.java:430)     在   org.jboss.tools.common.java.ParametedType.isAssignableTo(ParametedType.java:398)     在   org.jboss.tools.common.java.ParametedType.isAssignableTo(ParametedType.java:402)     在   org.jboss.tools.common.java.ParametedType.areTypeParametersAssignableTo(ParametedType.java:430)     在   org.jboss.tools.common.java.ParametedType.isAssignableTo(ParametedType.java:398)     在   org.jboss.tools.common.java.ParametedType.isAssignableTo(ParametedType.java:402)     在   org.jboss.tools.common.java.ParametedType.areTypeParametersAssignableTo(ParametedType.java:430)     在   org.jboss.tools.common.java.ParametedType.isAssignableTo(ParametedType.java:398)     在   org.jboss.tools.common.java.ParametedType.isAssignableTo(ParametedType.java:402)     在   org.jboss.tools.common.java.ParametedType.areTypeParametersAssignableTo(ParametedType.java:430)     在   org.jboss.tools.common.java.ParametedType.isAssignableTo(ParametedType.java:398)     在   org.jboss.tools.common.java.ParametedType.isAssignableTo(ParametedType.java:402)ava.lang.StackOverflowError     在   org.eclipse.jdt.internal.core.SourceType.getPackageFragment(SourceType.java:427)     在   org.eclipse.jdt.internal.core.NamedMember.getFullyQualifiedName(NamedMember.java:183)     在   org.eclipse.jdt.internal.core.SourceType.getFullyQualifiedName(SourceType.java:272)     在   org.eclipse.jdt.internal.core.SourceType.getFullyQualifiedName(SourceType.java:265)     在   org.jboss.tools.common.java.ParametedType.equals(ParametedType.java:161)     在   org.jboss.tools.common.java.ParametedType.isAssignableTo(ParametedType.java:380)     在   org.jboss.tools.common.java.ParametedType.areTypeParametersAssignableTo(ParametedType.java:430)     在   org.jboss.tools.common.java.ParametedType.isAssignableTo(ParametedType.java:398)     在   org.jboss.tools.common.java.ParametedType.isAssignableTo(ParametedType.java:402)     在   org.jboss.tools.common.java.ParametedType.areTypeParametersAssignableTo(ParametedType.java:430)     在   org.jboss.tools.common.java.ParametedType.isAssignableTo(ParametedType.java:398)     在   org.jboss.tools.common.java.ParametedType.isAssignableTo(ParametedType.java:402)...

在日志文件的末尾:

  

at org.jboss.tools.cdi.internal.core.impl.CDIProject.containsType(CDIProject.java:498)     在   org.jboss.tools.cdi.internal.core.impl.CDIProject.getBeans(CDIProject.java:383)     在   org.jboss.tools.cdi.internal.core.validation.CDICoreValidator.validateInjectionPoint(CDICoreValidator.java:1805)     在   org.jboss.tools.cdi.internal.core.validation.CDICoreValidator.validateBean(CDICoreValidator.java:742)     在   org.jboss.tools.cdi.internal.core.validation.CDICoreValidator.validateResource(CDICoreValidator.java:611)     在   org.jboss.tools.cdi.internal.core.validation.CDICoreValidator.validateAll(CDICoreValidator.java:511)     在   org.jboss.tools.common.validation.ValidatorManager.validateAll(ValidatorManager.java:132)     在   org.jboss.tools.common.validation.ValidatorManager.validateInJob(ValidatorManager.java:84)     在   org.eclipse.wst.validation.internal.operations.ValidatorJob.run(ValidatorJob.java:78)     在org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)

不幸的是,我在xhtml页面或Java类中找不到任何循环依赖。不知道怎么解决这个问题?

在Viacheslav Kabanovich的回复之后我才能找到某事。像这样我无法想象成为问题...在我的情况下,代码中有很多这样的星座......也不是他所说的那种组合......

@Named
public class A extends B<Y,Z> implements Serializable
{
private static final long serialVersionUID = 4283839282383928L;
@Inject
private transient C<Y,Z> c;
....

}

2 个答案:

答案 0 :(得分:1)

我用这个假豆重现了这个问题:

public class A<V extends A.B> {

    static class B extends A<V> {       
    }

    @Inject
    A<V> s2; 
}

我想看看“现实生活”中的一个例子。你能否在你的代码中找到一个注入,它将一个参数类型设置为一个变量,然后在这里发布一个可赋值给它的bean类的类型声明?

无论如何,这是我们修复的错误。

11月19日新增: 我创建了问题https://issues.jboss.org/browse/JBIDE-21036并修复了我能找到的案例。 请为涉及类型参数的问题案例添加注释。这组定义应该是完整的,例如,请在您的示例中添加类型B和C的B和C声明,如果它们扩展其他类型并使用边界声明类型参数,则需要声明所有相关类型。

答案 1 :(得分:0)

尝试更新到Eclipse Mars + JBoss Tools 4.3.0。