2014-11-15 2 views
0

Я попытался создать простой образец удаленного клиента EJB, но я все время получаю java.lang.NoClassDefFoundError: в любое время, когда пытаюсь развернуть EJB.Почему Wildfly 8.1.0 final return java.lang.NoClassDefFoundError: при развертывании модуля ejb с удаленной библиотекой приложений, но у стеклянной рыбы нет?

The Remote Java библиотеки Файловая структура:

> TestRemoteInterface  
    --Source Package  
     -- bean 
      --TestBeanRemote.java 
    -- Libraries  
     -- Java EE 6 API Library  
     --JDK 1.8 

EJB-структура модуля Файл:

> TestEJBModule 
    --Source Package  
     -- bean 
      --TestBean.java  
    -- Libraries 
     -- TestRemoteInterface – dist/TestRemoteInterface  
     -- Java EE 6 API Library  
     -- JDK 1.8 

TestBeanRemote.java

package bean; 
import javax.ejb.Remote; 

@Remote 
public interface TestBeanRemote { 

    String getName(String name); 

} 

TestBean .Java

package bean;

import javax.ejb.Stateless;

@Stateless public class TestBean implements TestBeanRemote {

@Override 
public String getName(String name) { 
    return "Here is my " + name; 
} } 

Вопрос: Когда я пытаюсь развернуть TestEJBModule на получить журнал последующих:

WARN [org.jboss.modules] (MSC service thread 1-6) Failed to define class bean.TestBean in Module "deployment.TestEJBModule.jar:main" from Service Module Loader: java.lang.LinkageError: Failed to link bean/TestBean (Module "deployment.TestEJBModule.jar:main" from Service Module Loader)

....

Caused by: java.lang.NoClassDefFoundError: bean/TestBeanRemote 
    at java.lang.ClassLoader.defineClass1(Native Method) [rt.jar:1.8.0_05] 

....

Caused by: java.lang.ClassNotFoundException: bean.TestBeanRemote from [Module "deployment.TestEJBModule.jar:main" from Service Module Loader] at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:213) [jboss-modules.jar:1.3.3.Final]

.. .

Caused by: java.lang.LinkageError: Failed to link bean/TestBean (Module "deployment.TestEJBModule.jar:main" from Service Module Loader) at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:487) [jboss-modules.jar:1.3.3.Final] .....

Caused by: java.lang.NoClassDefFoundError: bean/TestBeanRemote

.....

Caused by: java.lang.ClassNotFoundException: bean.TestBeanRemote from [Module "deployment.TestEJBModule.jar:main" from Service Module Loader] at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:213) [jboss-modules.jar:1.3.3.Final]

Когда я попытался развернуть этот же образец с Glassfish 4. Он отлично работает.

NB: Я использую NetBeans 8.0.1

Там, как представляется, подобная thread, но это не помогло. Заранее спасибо.

+1

Вы развертыванием '' TestRemoteInterface' и TestEJBModule' как два разделенных банки? Если это так, обе банки находятся в разделенных загрузчиках классов, и именно поэтому вы получаете NoClassDefFoundError. Рассматривали ли вы развертывание файла уха, содержащего обе банки? – fonkap

ответ

0

Я решил эту проблему, развернув сначала банку TestRemoteInterface до разъема. Затем я добавил его в проект manifest.mf как зависимость.

пример:

Dependencies: deployment.TestRemoteInterface.jar 

Другим вариантом, если вы используете Maven являетесь зависимости использования Maven манифеста

<configuration> 
    <archive> 
     <manifestEntries> 
     <Dependencies>TestRemoteInterface.jar</Dependencies> 
     </manifestEntries> 
    </archive> 
</configuration>