gpt4 book ai didi

java.lang.NoClassDefFoundError : weblogic/management/j2ee/mejb/Mejb_dj5nps_Impl

转载 作者:太空宇宙 更新时间:2023-11-04 14:16:09 27 4
gpt4 key购买 nike

我有一个 Java Ant 项目,它创建一个可执行 Jar,以便通过 T3 协议(protocol) (Weblogic) 连接到 JNDI。我建立连接和列出 JNDI 没有问题:)例如,我可以看到 weblogic.management.j2ee.mejb.Mejb_dj5nps_EOImpl mejbmejb_jarMejb_EO JNDI 是可访问的。

我的可执行 Jar 包含 weblogic 类(存储在 weblogic.jar 中的类)。

我使用此 Ant 代码来创建可执行 Jar:

<target name="dist" depends="compile">
<jar destfile="${dist.dir}/JndiConnection.jar" basedir="${build.dir}">
<zipgroupfileset dir="${lib.dir}">
<include name='**/*.jar'/>
</zipgroupfileset>
<manifest>
<attribute name="Main-Class" value="${ant.project.name}" />
<attribute name="Class-Path" value="${ant.project.name}.jar" />
</manifest>
</jar>
</target>

lib 目录 (${lib.dir}) 至少包含 wlfullclient.jarmejb.jar

现在,我想查询 JMO 的名称(参见 http://docs.oracle.com/cd/E23943_01/web.1111/e13736/toc.htm#JEEMG106 中的源代码)。我已将此代码放入我的项目中(请参阅 http://docs.oracle.com/cd/E23943_01/web.1111/e13736/toc.htm#JEEMG106 中的“示例 1 查询 JMO 名称”)。在我的可执行 Jar 中,我将所有类存储在 mejb.jar 中:

Archive:  mejb.jar

Length Date Time Name
--------- ---------- ----- ----
147 2011-11-15 09:01 META-INF/MANIFEST.MF
0 2011-11-15 09:01 META-INF/
882 2011-11-15 09:01 META-INF/ejb-jar.xml
857 2011-11-15 09:01 META-INF/weblogic-ejb-jar.xml
0 2011-11-15 09:01 weblogic/
0 2011-11-15 09:01 weblogic/management/
0 2011-11-15 09:01 weblogic/management/j2ee/
0 2011-11-15 09:01 weblogic/management/j2ee/mejb/
6622 2011-11-15 09:01 weblogic/management/j2ee/mejb/Mejb_dj5nps_EOImpl.class
2284 2011-11-15 09:01 weblogic/management/j2ee/mejb/Mejb_dj5nps_EOImplRTD.xml
7442 2011-11-15 09:01 weblogic/management/j2ee/mejb/Mejb_dj5nps_EOImpl_1036_WLStub.class
7288 2011-11-15 09:01 weblogic/management/j2ee/mejb/Mejb_dj5nps_EOImpl_WLSkel.class
2548 2011-11-15 09:01 weblogic/management/j2ee/mejb/Mejb_dj5nps_HomeImpl.class
1161 2011-11-15 09:01 weblogic/management/j2ee/mejb/Mejb_dj5nps_HomeImplRTD.xml
4976 2011-11-15 09:01 weblogic/management/j2ee/mejb/Mejb_dj5nps_HomeImpl_1036_WLStub.class
4200 2011-11-15 09:01 weblogic/management/j2ee/mejb/Mejb_dj5nps_HomeImpl_WLSkel.class
2414 2011-11-15 09:01 weblogic/management/j2ee/mejb/Mejb_dj5nps_Impl.class
1724 2011-11-15 09:01 weblogic/management/j2ee/mejb/Mejb_dj5nps_Intf.class
290 2011-11-15 09:01 _WL_GENERATED
--------- -------
42835 19 files

我的可执行 Jar 中的一些类:

$ 7z l JndiConnection.jar | grep 'weblogic/management/j2ee/mejb/'
2011-11-15 09:01:30 ..... 6622 2303 weblogic/management/j2ee/mejb/Mejb_dj5nps_EOImpl.class
2011-11-15 09:01:32 ..... 2284 553 weblogic/management/j2ee/mejb/Mejb_dj5nps_EOImplRTD.xml
2011-11-15 09:01:32 ..... 7442 2565 weblogic/management/j2ee/mejb/Mejb_dj5nps_EOImpl_1036_WLStub.class
2011-11-15 09:01:32 ..... 7288 2844 weblogic/management/j2ee/mejb/Mejb_dj5nps_EOImpl_WLSkel.class
2011-11-15 09:01:30 ..... 2548 1128 weblogic/management/j2ee/mejb/Mejb_dj5nps_HomeImpl.class
2011-11-15 09:01:32 ..... 1161 425 weblogic/management/j2ee/mejb/Mejb_dj5nps_HomeImplRTD.xml
2011-11-15 09:01:32 ..... 4976 1845 weblogic/management/j2ee/mejb/Mejb_dj5nps_HomeImpl_1036_WLStub.class
2011-11-15 09:01:32 ..... 4200 1890 weblogic/management/j2ee/mejb/Mejb_dj5nps_HomeImpl_WLSkel.class
2011-11-15 09:01:30 ..... 2414 926 weblogic/management/j2ee/mejb/Mejb_dj5nps_Impl.class
2011-11-15 09:01:30 ..... 1724 661 weblogic/management/j2ee/mejb/Mejb_dj5nps_Intf.class
2008-07-25 17:38:32 ..... 3231 1225 weblogic/management/j2ee/mejb/MejbBean.class
2011-11-15 08:55:40 ..... 3231 1225 weblogic/management/j2ee/mejb/MejbBean.class

当我想运行 jar(java -jar JndiConnection.jarjava -cp '.:JndiConnection.jar:/path/to/libs/*' JndiConnection)时,出现以下错误:

Java.rmi.RemoteException: EJB Exception: ; nested exception is: 
java.lang.NoClassDefFoundError: weblogic/management/j2ee/mejb/Mejb_dj5nps_Impl
at weblogic.rjvm.ResponseImpl.unmarshalReturn(ResponseImpl.java:234)
at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:348)
at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:259)
at weblogic.management.j2ee.mejb.Mejb_dj5nps_EOImpl_1036_WLStub.queryNames(Unknown Source)
at Mejb.getAllJMONames(Unknown Source)

我不明白,因为我的可执行 Jar 中有 weblogic/management/j2ee/mejb/Mejb_dj5nps_Impl 。我认为 Jar 找不到它,但我不知道为什么......

我尝试过 list :

Main-Class: JndiConnection
Class-Path: . JndiConnection.jar

和:

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.4
Created-By: 1.7.0_65-b32 (Oracle Corporation)
Main-Class: JndiConnection
Class-Path: .

JndiConnection.class位于根目录:

Listing archive: JndiConnection.jar
Path = JndiConnection.jar
[...]
2014-12-31 16:54:26 ..... 7645 3454 JndiConnection.class
[...]

我使用 Apache Ant 1.8.4 因为我的 zip 文件 (jar) 中需要包含超过 65535 个条目。当我使用最新的 Ant 版本 (1.9.3) 时出现此错误:

Problem creating jar: archive contains more than 65535 entries.

- 编辑 1

我可以在 Deployments->Monitoring->EJB 中看到一个 Mejb 实例。

网络中心常规配置中启用“启用管理EJB”复选框。如果我理解的话,这个复选框允许管理员启用或禁用 MEJB。

我在部署->监控->EJB中看到一行包含有关 Mejb 应用程序的信息。此行显示已与 MEJB 应用程序建立 77 个连接,但有 77 个连接失败。

预先感谢您的帮助。

注意:我使用的是 Weblogic 10.3.6.0 版本。

最佳答案

如果您的可执行 JAR 是 JndiConnection.jar,那么您不应在 list 中引用其自身。类路径用于引用例如未包含在可执行 JAR 中的依赖 jar。如果您对 JAR 范围之外的其他类或 JAR 没有依赖关系,那么您可以尝试以下操作:

Main-Class: com.bla.bla.JndiConnection
Class-Path: .

不要忘记您还必须显示该类(class)的包。因此请提供类的完全限定名称。

同样在Weblogic管理控制台中,您可以看到bean池中有任何实例(对于Mejb_dj5nps)吗?

以下是检查 Bean 是否存在的方法:在 WebLogic 控制台中:转到“部署”->“监控”->“EJB”(如果您部署了 EJB,您应该在此处看到它)

附上屏幕截图,您可以看到我已经部署了远程 EJB 进行测试 enter image description here

在您的可执行 JAR 中,您有:

2008-07-25 17:38:32 .....         3231         1225  weblogic/management/j2ee/mejb/MejbBean.class
2011-11-15 08:55:40 ..... 3231 1225 weblogic/management/j2ee/mejb/MejbBean.class

这导致了一个问题。

您希望使用 WebLogic Server 10.x 或更高版本。然后只需使用wlfullclient.jar并且不要使用mejb.jar从 ${lib.dir} 中删除 mejb.jar 并重建可执行 JAR。

检查有关 wlfullclient.jar 的链接 Client-side Applications

关于java.lang.NoClassDefFoundError : weblogic/management/j2ee/mejb/Mejb_dj5nps_Impl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27720681/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com