java - : "JBoss Tools Project Validator" 期间发生内部错误

标签 java eclipse maven jboss

我使用 Eclipse Kepler Service Release 2 大约一个星期以来,我遇到了 JBoss Tools Project Validator 问题。清理项目时会发生此问题。

看日志,好像是循环依赖:

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

在日志文件的末尾:

at org.jboss.tools.cdi.internal.core.impl.CDIProject.containsType(CDIProject.java:498) at org.jboss.tools.cdi.internal.core.impl.CDIProject.getBeans(CDIProject.java:383) at org.jboss.tools.cdi.internal.core.validation.CDICoreValidator.validateInjectionPoint(CDICoreValidator.java:1805) at org.jboss.tools.cdi.internal.core.validation.CDICoreValidator.validateBean(CDICoreValidator.java:742) at org.jboss.tools.cdi.internal.core.validation.CDICoreValidator.validateResource(CDICoreValidator.java:611) at org.jboss.tools.cdi.internal.core.validation.CDICoreValidator.validateAll(CDICoreValidator.java:511) at org.jboss.tools.common.validation.ValidatorManager.validateAll(ValidatorManager.java:132) at org.jboss.tools.common.validation.ValidatorManager.validateInJob(ValidatorManager.java:84) at org.eclipse.wst.validation.internal.operations.ValidatorJob.run(ValidatorJob.java:78) at 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;
....

最佳答案

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

public class A<V extends A.B> {

    static class B extends A<V> {       
    }

    @Inject
    A<V> s2; 
}

我想看一个来自“现实生活”的例子。您能否在您的代码中找到一个将参数类型设置为变量的注入(inject),并将其与可分配给它的 bean 类的类型声明一起发布到这里?

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

11 月 19 日添加: 我创建了问题 https://issues.jboss.org/browse/JBIDE-21036和我能找到的固定案例。 请在涉及类型参数的问题案例中添加评论。定义集应该是完整的,例如请在您的示例中添加 B 和 C 类型 B 和 C 的声明,如果它们扩展其他类型并声明带有边界的类型参数,则需要声明所有涉及的类型。

关于java - : "JBoss Tools Project Validator" 期间发生内部错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33301776/

相关文章:

java - org.apache.catalina.LifecycleException : Failed to start component [StandardEngine[Catalina]. StandardHost[localhost]]

java - 如何将字符串响应转换为可迭代对象

spring-boot-starter-parent 资源包括/排除说明

java - 使用 maven 为 spring-boot web 应用程序生成工作 war 文件

java - 如何使用 Arraylist 将 Sqlite Adapter 类访问到 MainActivity?

java - 在其他模块中加载测试资源?

java - Eclipse 中的 Junit 测试失败,并出现 java.lang.NoClassDefFoundError : org/hamcrest/SelfDescribing

java - 如何使用 Eclipse 工作区作业等详细信息按钮实现 Eclipse 进度条

Eclipse Marketplace 客户端已安装但缺失

maven - 如何将环境变量传递给作为 mvn jetty :run? 启动的进程