【发布时间】:2012-02-08 12:01:50
【问题描述】:
我将应用程序打包为一个 .ear 文件,其中包含 ejb 模块。有实现远程接口的无状态会话 bean。像这样的:
package my.package.ext.impl;
[...]
@Stateless(name = "MyPropertiesHandler", mappedName = "ejb/MyPropertiesHandler")
public class PropertiesHandler implements PropertiesHandlerRemote {
[...]
}
还有这个:
package my.package.ext;
[...]
@Remote
public interface PropertiesHandlerRemote {
[...]
}
里面还生成了client-ejb jar,里面有业务远程接口等一些东西。
此客户端 ejb jar 作为 Maven 依赖项附加到其他应用程序。
我尝试从此应用程序中查找 PropertiesHandler 服务:
PropertiesHandlerRemote propertiesHandler = InitialContext.doLookup(
"ejb/MyPropertiesHandler#my.package.ext.PropertiesHandlerRemote");
此时我收到以下错误:
java.lang.NoClassDefFoundError: my/package/ext/PropertiesHandlerRemote
at [...]
at sun.reflect.GeneratedMethodAccessor633.invoke(Unknown Source)
Truncated. see log file for complete stacktrace
Caused By: java.lang.ClassNotFoundException: my.package.ext.PropertiesHandlerRemote
at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:297)
at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:270)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:179)
Truncated. see log file for complete stacktrace
如上所示,我在 Weblogic 10.x 上运行它。
有什么想法出错了吗?
【问题讨论】:
-
所以我相信它可以编译,你在 maven 中为这个依赖设置了什么范围? WL 在运行时找不到该类。
-
@Kris 感谢您的回复。没有指定范围,所以我猜它是默认编译的。无论如何,它被打包为一个 .ear 和包含在其中的 client-ejb jar。