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