Jboss WildFly 8中的InvalidBytecodeException
我有一个正在运行的项目设置,其中包含一些bean和一个WildFly 8.2.0。我刚刚添加了以下类:Jboss WildFly 8中的InvalidBytecodeException,jboss,wildfly,Jboss,Wildfly,我有一个正在运行的项目设置,其中包含一些bean和一个WildFly 8.2.0。我刚刚添加了以下类: public class CatalogFilter implements Serializable { private static final long serialVersionUID = 3028220029652090421L; private final String catalogName; private Boolean active; p
public class CatalogFilter implements Serializable {
private static final long serialVersionUID = 3028220029652090421L;
private final String catalogName;
private Boolean active;
public CatalogFilter(String catalogName) {
this.catalogName = catalogName;
}
public String getCatalogName() {
return this.catalogName;
}
public Boolean getActive() {
return this.active;
}
public void setActive(Boolean active) {
this.active = active;
}
}
现在,当我用这个类部署一个EAR时,我得到了以下非常奇怪的异常:
Caused by: org.jboss.classfilewriter.InvalidBytecodeException: Cannot load variable at 2. Local Variables: Local Variables: [StackEntry [descriptor=Lorg/acme/catalog/CatalogFilter;, type=OBJECT], StackEntry [descriptor=Lorg/acme/catalog/CatalogElement;, type=OBJECT]]
at org.jboss.classfilewriter.code.CodeAttribute.aload(CodeAttribute.java:185)
at org.jboss.invocation.proxy.ProxyFactory$ProxyMethodBodyCreator.overrideMethod(ProxyFactory.java:150) [jboss-invocation-1.2.1.Final.jar:1.2.1.Final]
at org.jboss.invocation.proxy.AbstractSubclassFactory.overrideMethod(AbstractSubclassFactory.java:106) [jboss-invocation-1.2.1.Final.jar:1.2.1.Final]
at org.jboss.invocation.proxy.AbstractSubclassFactory.addInterface(AbstractSubclassFactory.java:363) [jboss-invocation-1.2.1.Final.jar:1.2.1.Final]
at org.jboss.invocation.proxy.ProxyFactory.generateClass(ProxyFactory.java:286) [jboss-invocation-1.2.1.Final.jar:1.2.1.Final]
at org.jboss.invocation.proxy.AbstractClassFactory.buildClassDefinition(AbstractClassFactory.java:207) [jboss-invocation-1.2.1.Final.jar:1.2.1.Final]
at org.jboss.invocation.proxy.AbstractClassFactory.defineClass(AbstractClassFactory.java:160) [jboss-invocation-1.2.1.Final.jar:1.2.1.Final]
at org.jboss.invocation.proxy.AbstractProxyFactory.getCachedMethods(AbstractProxyFactory.java:150) [jboss-invocation-1.2.1.Final.jar:1.2.1.Final]
at org.jboss.as.ejb3.component.stateless.StatelessComponentDescription$3.configure(StatelessComponentDescription.java:150)
at org.jboss.as.ee.component.DefaultComponentViewConfigurator.configure(DefaultComponentViewConfigurator.java:68)
at org.jboss.as.ee.component.deployers.EEModuleConfigurationProcessor.deploy(EEModuleConfigurationProcessor.java:81)
... 6 more
如果我从EAR中删除该类,它将再次工作。Google说如果你想使用全新的Java8特性,WildFly 9中有一个bug,但我不使用WildFly 9,而且类中也没有Java8特性
怎么了?这个例外与WildFly抱怨的班级无关。远程接口具有以下方法:
default List<CatalogElement> findCatalogElements(CatalogFilter catalogFilter) throws CatalogManagerException {
List<CatalogElement> result = findCatalogElements(catalogFilter.getCatalogName());
if (catalogFilter.getActive() != null) {
result.removeIf(e -> e.isActive() != catalogFilter.getActive().booleanValue());
}
return result;
}
默认列表findCatalogElements(CatalogFilter CatalogFilter)引发CatalogManagerException{
列表结果=findCatalogElements(catalogFilter.getCatalogName());
if(catalogFilter.getActive()!=null){
result.removeIf(e->e.isActive()!=catalogFilter.getActive().booleanValue());
}
返回结果;
}
出于某种原因,lambdas不起作用,因此我们必须这样编写方法:
default List<CatalogElement> findCatalogElements(CatalogFilter catalogFilter) throws CatalogManagerException {
List<CatalogElement> result = findCatalogElements(catalogFilter.getCatalogName());
if (catalogFilter.getActive() != null) {
result.removeIf(new Predicate<CatalogElement>() {
@Override
public boolean test(CatalogElement e) {
return e.isActive() != catalogFilter.getActive().booleanValue();
}
});
}
return result;
}
默认列表findCatalogElements(CatalogFilter CatalogFilter)引发CatalogManagerException{
列表结果=findCatalogElements(catalogFilter.getCatalogName());
if(catalogFilter.getActive()!=null){
result.removeIf(新谓词(){
@凌驾
公共布尔测试(元件目录e){
返回e.isActive()!=catalogFilter.getActive().booleanValue();
}
});
}
返回结果;
}
我遇到了一个与您类似的问题,我通过向SLSB EJB添加@LocalBean
解决了这个问题。