- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
当我调用 java.lang.Class 的方法
。我正在尝试使用反射获取 TMF 特定 jar 的 getMethod
时,我看到 java.lang.NoClassDefFoundError: org/omg/CORBA/InterfaceDef
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
关于java.lang.NoClassDefFoundError : org/omg/CORBA/InterfaceDef 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13517497/
当我调用 java.lang.Class 的方法 getMethod 时,我看到 java.lang.NoClassDefFoundError: org/omg/CORBA/InterfaceDef
我是一名优秀的程序员,十分优秀!