[英]java.lang.NoClassDefFoundError:oracle/j2ee/ws/common/jaxws/ServiceDelegateImpl
[英]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.jar和mejb.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.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 。 我认为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.