[英]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.