gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:34:41 28 4
gpt4 key购买 nike

当我调用 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com