简体   繁体   English

为什么在使用远程应用程序库部署ejb模块时,Wildfly 8.1.0最终返回java.lang.NoClassDefFoundError:,但是glassfish没有?

[英]Why Wildfly 8.1.0 final return java.lang.NoClassDefFoundError: when deploying ejb module with a remote application library but glassfish doesn’t?

I tried to create a simple EJB remote client sample but I keep getting java.lang.NoClassDefFoundError: any time I tried to deploy the EJB. 我试图创建一个简单的EJB远程客户端示例,但是在尝试部署EJB时,我总是得到java.lang.NoClassDefFoundError:

The Remote Java Library File Structure is: 远程Java库文件结构为:

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

The EJB Module File Structure is: EJB模块文件结构为:

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

TestBeanRemote.java TestBeanRemote.java

package bean;
import javax.ejb.Remote;

@Remote
public interface TestBeanRemote {

    String getName(String name);

}

TestBean .java TestBean的.java

package bean; 包装豆;

import javax.ejb.Stateless; 导入javax.ejb.Stateless;

@Stateless public class TestBean implements TestBeanRemote { @Stateless公共类TestBean实现了TestBeanRemote {

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

Question: When I try to deploy the TestEJBModule on get the follow log: 问题:当我尝试部署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) WARN [org.jboss.modules](MSC服务线程1-6)无法从服务模块加载程序中的模块“ deployment.TestEJBModule.jar:main”中定义类bean.TestBean:java.lang.LinkageError:无法链接bean / TestBean(来自服务模块加载程序的模块“ deployment.TestEJBModule.jar:main”)

.... ....

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] 由以下原因引起:java.lang.ClassNotFoundException:bean.TestBeanRemote来自org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:213)的[Service Module Loader的模块“ deployment.TestEJBModule.jar:main”,来自Service Module Loader] .jar:1.3.3。最终版]

... ...

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] ..... 原因:java.lang.LinkageError:无法在org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:487)处链接bean / TestBean(服务模块加载程序中的模块“ deployment.TestEJBModule.jar:main”)。[jboss -modules.jar:1.3.3.Final] .....

Caused by: java.lang.NoClassDefFoundError: bean/TestBeanRemote 造成原因: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] 由以下原因引起:java.lang.ClassNotFoundException:bean.TestBeanRemote来自org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:213)的[Service Module Loader的模块“ deployment.TestEJBModule.jar:main”,来自Service Module Loader] .jar:1.3.3。最终版]

When I tried to deploy this same sample with Glassfish 4. It works fine. 当我尝试使用Glassfish 4部署相同的示例时,它工作正常。

NB: I am using netbeans 8.0.1 注意:我正在使用netbeans 8.0.1

There appear to be a similar thread but it didn't help much. 似乎有一个类似的线程,但并没有太大帮助。 Thank you in advance. 先感谢您。

I solved this problem by deploying the TestRemoteInterface jar to the sever first. 我通过首先将TestRemoteInterface jar部署到服务器来解决了这个问题。 Then I added it to the project manifest.mf as a dependency. 然后,将其作为依赖项添加到项目manifest.mf中。

example: 例:

Dependencies: deployment.TestRemoteInterface.jar

Another option if you are using maven is the use maven dependencies manifest 如果您正在使用maven,则另一个选择是use maven依赖清单

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM