繁体   English   中英

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

[英]java.lang.NoClassDefFoundError: weblogic/management/j2ee/mejb/Mejb_dj5nps_Impl

我有一个Java Ant项目,该项目创建一个可执行的Jar,以便通过T3协议(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找不到它,但我不知道为什么...

我尝试了清单:

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实例。

Webcenter的“ 常规配置”中启用了“启用管理EJB复选框 据我了解,此复选框允许管理员启用或禁用MEJB。

我在Deployments-> Monitoring-> EJB中看到一行包含有关Mejb应用程序的信息。 此行表明已经建立了与MEJB应用程序的77个连接,并且失败了77条。

预先感谢您的帮助。

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

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

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

不要忘记,您也必须显示该类的软件包。 因此,请提供该类的全限定名称。

在Weblogic管理控制台中的Aslo中,您是否可以看到Bean池中有任何实例(用于Mejb_dj5nps)?

这是检查Bean是否存在的方法: 在WebLogic控制台中:转到Deployments-> Monitoring-> EJB(如果已部署EJB,则应在此处看到它)

附上一个屏幕截图,您将看到我已部署了一个远程EJB进行测试 在此处输入图片说明

在可执行的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 客户端应用程序的链接

暂无
暂无

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

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