Java NoClassDefFoundError:weblogic/management/j2ee/mejb/mejb\u dj5nps\u Impl

Java NoClassDefFoundError:weblogic/management/j2ee/mejb/mejb\u dj5nps\u Impl,java,ant,jar,weblogic-10.x,Java,Ant,Jar,Weblogic 10.x,我有一个JavaAnt项目,它创建一个可执行Jar,以便通过T3协议(Weblogic)连接到JNDI。我可以建立连接并列出JNDIs:) 例如,我可以看到weblogic.management.j2ee.mejb.mejb_dj5nps_EOImpl mejbmejb_jarMejb_EOJNDI是可访问的 我的可执行Jar包含weblogic类(存储在weblogic.Jar中的类) 我使用以下Ant代码创建可执行Jar: <target name="dist" depends="co

我有一个JavaAnt项目,它创建一个可执行Jar,以便通过T3协议(Weblogic)连接到JNDI。我可以建立连接并列出JNDIs:) 例如,我可以看到weblogic.management.j2ee.mejb.mejb_dj5nps_EOImpl mejbmejb_jarMejb_EOJNDI是可访问的

我的可执行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>
$ 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中的一些类:

<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>
$ 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。我想罐子找不到,但我不知道为什么

我已尝试使用清单:

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

JndiConnection.class位于根目录中:

Listing archive: JndiConnection.jar
Path = JndiConnection.jar
[...]
2014-12-31 16:54:26 .....         7645         3454  JndiConnection.class
[...]
我使用ApacheAnt1.8.4,因为我的zip文件(jar)中需要有65535个以上的条目。 我在使用上一个Ant版本(1.9.3)时出现此错误:

-编辑1

我可以在部署->监视->EJB中看到一个Mejb实例

webcenter的常规配置中启用复选框“管理EJB已启用”。如果我理解,此复选框允许管理员启用或禁用MEJB

我在部署->监视->EJB中看到一行,其中包含有关Mejb应用程序的信息。这一行显示已经建立了77个到MEJB应用程序的连接,77个出现故障

提前感谢您的帮助


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

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

Main-Class: com.bla.bla.JndiConnection
Class-Path: .
别忘了,你也必须给全班同学展示包装。因此,请提供类的完全限定名

在Weblogic管理控制台中,您能看到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的此链接

我的可执行jar包含以下内容:我看不到Mejb_dj5nps实例,但在webcenter的常规配置中启用了启用管理EJB复选框…JNDI列表中有一行包含实例Mejb:weblogic.Management.j2ee.Mejb.Mejb_dj5nps_EOImplmejbmejb\u jarMejb\u这是服务器端错误还是客户端错误?我认为这可能是服务器端错误……您是如何部署的?使用EclipseIDE?没有。我正在Linux下使用Geany/Java/Javac/Ant。我不使用Eclipse,因为我是一个小型java项目。
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