Java 11 和 jacorb。ClassNotFoundException: javax.rmi.CORBA.Stub

dum*_*ead 2 java jacorb java-11

我正在尝试使用 jacorb 3.9 执行我的 java 11 (openjdk) 应用程序。应用程序开始执行但崩溃抱怨丢失:

javax.rmi.CORBA.Stub
Run Code Online (Sandbox Code Playgroud)

我已经在 CLASSPATH 中包含了所有 jacorb 库

set CLASSPATH = ${JACORB_PATH}/jacorb.jar:${CLASSPATH}
set CLASSPATH = ${JACORB_PATH}/jacorb-3.9.jar:${CLASSPATH}
set CLASSPATH = ${JACORB_PATH}/jacorb-omgapi.jar:${CLASSPATH}
set CLASSPATH = ${JACORB_PATH}/slf4j-api.jar:${CLASSPATH}
set CLASSPATH = ${JACORB_PATH}/slf4j-jdk14-1.7.14.jar:${CLASSPATH}
set CLASSPATH = ${JACORB_PATH}/jacorb-services.jar:${CLASSPATH}
set CLASSPATH = ${JACORB_PATH}/picocontainer.jar:${CLASSPATH}
set CLASSPATH = ${JACORB_PATH}/wrapper.jar:${CLASSPATH}
set CLASSPATH = ${JACORB_PATH}/antlr.jar:${CLASSPATH}
set CLASSPATH = ${JACORB_PATH}/idl.jar:${CLASSPATH}
Run Code Online (Sandbox Code Playgroud)

执行时,我得到这个:

java.lang.reflect.InvocationTargetException
...
Caused by: java.lang.ClassNotFoundException: javax.rmi.CORBA.Stub
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
Run Code Online (Sandbox Code Playgroud)

我还尝试使用以下方法设置 JDK_JAVA_OPTIONS:

--module-path ${JACORB_PATH} --add-modules java.corba 
-Dorg.omg.CORBA.ORBClass=org.jacorb.orb.ORB -Dorg.omg.CORBA.ORBSingletonClass=org.jacorb.orb.ORBSingleton
Run Code Online (Sandbox Code Playgroud)

但抱怨“发现两个版本的模块 slf4j.jdk14”

执行程序的命令是:

java -classpath $CLASSPATH myprog.MYPROG 
Run Code Online (Sandbox Code Playgroud)

该应用程序最初是为 Java 8 编写的,并且与 jacorb 一起工作正常,将以下参数传递给 java 命令:

-Djava.endorsed.dirs=JACORB_PATH
-Dorg.omg.CORBA.ORBClass=org.jacorb.orb.ORB
-Dorg.omg.CORBA.ORBSingletonClass=org.jacorb.orb.ORBSingleton
Run Code Online (Sandbox Code Playgroud)

该应用程序根本不使用 rmi。它是一个“经典的”CORBA 客户端。尝试解析命名服务的初始引用时崩溃

JEY*_*JEY 6

似乎该问题已在项目邮件列表中提出。一种解决方法是在 jacorb-3.8.jar 和 sfl4j jar 旁边的类路径上添加这两个: