2016-06-17 4 views
0

私はいくつかのBeanとWildFly 8.2.0で作業中のプロジェクトをセットアップしています。WildFly 8でInvalidBytecodeExceptionが発生しました。

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をデプロイするとき、今、私は次のように非常に奇妙な例外を取得::私は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 

を、それが再び動作する私は以下のクラスを追加しました。 Googleは、新しいJava 8の新機能を使用する場合、WildFly 9にバグがあると言いますが、WildFly 9は使用せず、Java 8の機能もありません。

どういうところが間違っていますか?

答えて

0

この例外は、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; 
} 

を、ラムダは動作しませんので、我々はこのような方法で書かなければならなかった:私は私が解決あなたのような問題を、持っ

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; 
} 
+0

を'@ LocalBean'をSLSB EJBに追加することによって実現されます。 – landal79

関連する問題