java.lang.NoClassDefFoundError : org/omg/CORBA/InterfaceDef 错误

标签 java reflection noclassdeffounderror corba

当我调用 java.lang.Class 的方法 getMethod 时,我看到 java.lang.NoClassDefFoundError: org/omg/CORBA/InterfaceDef 。我正在尝试使用反射获取 TMF 特定 jar 的 EmsSeeionFactory_I 中的 getEmsSession 方法。但是当我检查 jacorb.jar 中的类时,org/omg/CORBA/InterfaceDef.class 在类路径上可用。我在其他论坛上看到过,但在这些论坛中也没有看到相同问题的答案。看起来这个异常是从 native VM 代码抛出的。我现在毫 headless 绪。有任何想法吗 ?完整的堆栈跟踪如下

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)

最佳答案

安装或升级自定义应用程序使用的 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

关于java.lang.NoClassDefFoundError : org/omg/CORBA/InterfaceDef 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13517497/

相关文章:

java - DaoObject 上的 GreenDao NoClassDefFoundError

java - Android 应用程序不幸的是应用程序已停止

java - 由 : java.net.URISyntaxException 引起:索引 111 处的查询中存在非法字符:由于 URI 中的 {} 导致错误

java - 使用来自服务器的图像作为谷歌地图android中的标记图钉

java - 排序:HashMap 和 Sets 的替代方案?

java - 如何通过反射找到所有具有特定参数的方法?

go - 使用反射迭代结构的结构成员并在其上调用方法

java - Android 二维码生成器

java - 如何在java中访问 'owns'方法的实例?

android - java.lang.NoClassDefFoundError,而打开pdf