11

I am seeing java.lang.NoClassDefFoundError: org/omg/CORBA/InterfaceDef when I am calling the method getMethod of the java.lang.Class. I am trying to get the getEmsSession method in EmsSeeionFactory_I of TMF specific jars using reflection. But when I checked for the class in the jacorb.jar, org/omg/CORBA/InterfaceDef.class is available on the class path. I have seen in other forums and I am seeing no answer for the same question in those forums as well. It looks like this exception being thrown from native VM code. I am left with no clue now. Any Ideas ? Complete stack trace is as below

java.lang.NoClassDefFoundError: org/omg/CORBA/InterfaceDef
        at java.lang.Class.getDeclaredMethods0(Native Method)
        at java.lang.Class.privateGetDeclaredMethods(Class.java:2427)
        at java.lang.Class.getMethod0(Class.java:2670)
        at java.lang.Class.getMethod0(Class.java:2688)
        at java.lang.Class.getMethod(Class.java:1603)
4

2 回答 2

3

NoClassDefFoundError 表示在编译时找到了该类,但在运行时未找到。大多数情况下,运行时环境的类路径和编译环境的类路径之间存在差异。在你找到差异并修复它之后它会起作用。

如果您检查过并且 100% 确定类路径是相同的,那么错误会更加棘手,您可以阅读本教程来解决问题:http: //javarevisited.blogspot.be/2011/06/noclassdeffounderror-异常-in.html

于 2013-04-19T10:52:49.903 回答
1

安装或升级自定义应用程序使用的 Java 版本后,会生成以下错误:

Caused by: java.lang.NoClassDefFoundError: org/omg/CORBA/UserException

出现此问题的原因是 java.corba 模块(例如,org.omg.CORBA* 包)在 Java 9 中已被弃用。在 Java 11 中,该模块不再可用。

弃用模块意味着默认情况下,模块中的类在类路径中不可用。但是,您可以通过在 javac 或 java 命令行中包含 --add-module java.corba 选项将它们添加到类路径中。

注意:此选项在 Java 9 和 Java 10 中可用。CORBA 模块在 Java 11 中不可用。但是,有一种解决方法可以让您为 Java 11 添加这些模块。请参阅以下 Java 9 和 10 示例,以及 Java 11 的解决方法。

Java 9 和 10 的示例:

在 Java 9 和 10 中,您需要更改此命令:

jdk-9.0.4/bin/java -classpath "log4j.jar;sas.core.jar;sas.security.sspi.jar;sas.svc.connection.jar" javaclass 

当您包含 --add-module java.corba 时,命令如下所示:

jdk-9.0.4/bin/java --add-modules=java.corba -classpath "log4j.jar;sas.core.jar;sas.security.sspi.jar;sas.svc.connection.jar" javaclass 

Java 11 的解决方法:

要将 CORBA 模块添加到 Java 11,您必须从在线资源外部下载 GlassFish CORBA JAR 文件并将它们添加到 Java 11 的类路径中。以下列表显示了您需要的五个 GlassFish JAR 文件:

glassfish-corba-internal-api.jar
glassfish-corba-omgapi.jar
glassfish-corba-orb.jar
pfl-basic.jar
pfl-tf.jar

http://support.sas.com/kb/63/716.html

于 2022-01-11T12:16:49.750 回答