在使用WebLogic 11g中的远程EJB时出现了ClassNotFoundException错误

3

我敢肯定我以前做过这个,只是不确定我忘了什么。当使用Java SE客户端与Weblogic 11g通信时,处理远程EJB时会出现类未找到的异常。

javax.naming.NamingException: Unhandled exception in lookup [Root exception is org.omg.CORBA.MARSHAL:   vmcid: SUN  minor code: 257 completed: Maybe]
    at weblogic.corba.j2ee.naming.Utils.wrapNamingException(Utils.java:83)
    at weblogic.corba.j2ee.naming.ContextImpl.lookup(ContextImpl.java:291)
    at weblogic.corba.j2ee.naming.ContextImpl.lookup(ContextImpl.java:227)
    at javax.naming.InitialContext.lookup(InitialContext.java:392)
Caused by: org.omg.CORBA.MARSHAL:   vmcid: SUN  minor code: 257 completed: Maybe
    at com.sun.corba.se.impl.logging.ORBUtilSystemException.couldNotFindClass(ORBUtilSystemException.java:8260)
    at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1013)
    at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:879)
    at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_abstract_interface(CDRInputStream_1_0.java:873)
    at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_abstract_interface(CDRInputStream_1_0.java:863)
    at com.sun.corba.se.impl.encoding.CDRInputStream.read_abstract_interface(CDRInputStream.java:269)
    at com.sun.corba.se.impl.util.Utility.readAbstractAndNarrow(Utility.java:948)
    at com.sun.corba.se.impl.io.IIOPInputStream.inputObjectField(IIOPInputStream.java:1992)
    at com.sun.corba.se.impl.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:2220)
    at com.sun.corba.se.impl.io.IIOPInputStream.inputObject(IIOPInputStream.java:1227)
    at com.sun.corba.se.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:400)
    at com.sun.corba.se.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:317)
    at com.sun.corba.se.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:283)
    at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1034)
    at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:879)
    at com.sun.corba.se.impl.encoding.CDRInputStream.read_value(CDRInputStream.java:249)
    at com.sun.corba.se.impl.corba.TCUtility.unmarshalIn(TCUtility.java:269)
    at com.sun.corba.se.impl.corba.AnyImpl.read_value(AnyImpl.java:559)
    at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_any(CDRInputStream_1_0.java:739)
    at com.sun.corba.se.impl.encoding.CDRInputStream.read_any(CDRInputStream.java:220)
    at weblogic.corba.cos.naming._NamingContextAnyStub.resolve_any(_NamingContextAnyStub.java:81)
    at weblogic.corba.j2ee.naming.ContextImpl.lookup(ContextImpl.java:267)
    ... 5 more
Caused by: java.lang.ClassNotFoundException
    ... 26 more

在这个问题上点个赞。我也遇到了同样的错误。 - Franz See
Franz See:我最终将整个API和实现打包成一个JAR文件并部署给调用者了。虽然不应该这样做,但似乎已经奏效。 - John Ament
3个回答

0

您需要根据文档中的说明,使用wlfullclient.jar

在WebLogic Server 10.0之前,T3和WLS-IIOP客户端应用程序需要weblogic.jar文件来提供WebLogic Server特定的增值功能。对于WebLogic Server 10.x及更高版本,需要这些功能的独立客户端应用程序使用wlfullclient.jar文件代替weblogic.jar [...]

您可以使用JarBuilder工具为客户端应用程序生成wlfullclient.jar文件。 [...]

注意: 在客户端应用程序中继续使用weblogic.jar可能会导致ClassNotFoundException


0

这条评论是给那些在使用weblogic 12c+时面临vmcid:SUN minor code:2xx错误的开发人员。

我从以下网站(https://www.ibm.com/support/knowledgecenter/en/SS4QMC_9.5.0/com.ibm.help.install.cpqpostinstallation.doc/installation/t_SettingUpRuntimeUtilitiesOnOracleWebLogic.html)整理了这些笔记。

如果您正在使用WebLogic 12.1.3(或更高版本)和JDK 1.7,则安装wlthint3client.jar文件而非wlfullclient.jar。 如果您正在使用WebLogic 12.1.3(或更高版本)和JDK 1.8,则安装wljmsclient.jar文件和wlclient.jar文件,而不是wlfullclient.jar。

你应该使用适用于你所使用的Java版本的jar包。在我的情况下,wlclient.jar不能正常工作,我收到了一个vmcid: SUN minor code: 211错误提示,因此我改用了java 8和Oracle WebLogic Server 12.2.1.3提供的wlthint3client.jar,现在它可以正常工作了。

0

vmcid: SUN minor code: 257 completed: Maybe让我觉得可能是版本不兼容——也就是说,客户端代码和RMI存根与服务器EJB代码的版本不同。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接