【发布时间】:2019-08-21 16:38:32
【问题描述】:
我们内部安装了 SAP BO 4.2,但有人告诉我 REST 没有打开。我已经使用 SDK 编写了几个成功的 .Net 应用程序来连接并运行我们的生产 SAP 盒子,现在我正在尝试编写一个 Java 应用程序来做同样的事情,因为 Java SDK 公开了更多(和必需的)功能.
我似乎无法正确设置我的 Eclipse/Java/项目环境,甚至无法开始编码。
Windows 10、64 位
Eclipse 版本:2019-03 (4.11.0)
Java 版本:
openjdk 版本“12.0.2” 2019-07-16
OpenJDK 运行时环境(内部版本 12.0.2+10)
OpenJDK 64-Bit Server VM(build 12.0.2+10,混合模式,共享)
我创建了一个新的“Java EE”->“应用程序客户端项目”。
我无法获得以下代码以“作为应用程序运行”:
import com.crystaldecisions.sdk.framework.CrystalEnterprise;
import com.crystaldecisions.sdk.exception.SDKException;
import com.crystaldecisions.sdk.framework.IEnterpriseSession;
public class Main {
public static void main(String[] args) {
IEnterpriseSession oEnterpriseSession = null;
String username = "username";
String password = "password";
String cmsname = "server";
String authenticationType = "secEnterprise";
try {
oEnterpriseSession = CrystalEnterprise.getSessionMgr().logon(username, password, cmsname, authenticationType);
if (oEnterpriseSession == null) {
System.out.print("login failed");
}
} catch (SDKException sdkEx) {
System.out.print(sdkEx);
}
//do processing here
}
public Main() {
super();
}
}
我在构建路径中引用了以下库:
C:/Program Files (x86)/SAP BusinessObjects/SAP BusinessObjects Enterprise XI 4.0/java/lib/cecore.jar
C:/Program Files (x86)/SAP BusinessObjects/SAP BusinessObjects Enterprise XI 4.0/java/lib/cesession.jar
C:/Program Files (x86)/SAP BusinessObjects/SAP BusinessObjects Enterprise XI 4.0/java/lib/celib.jar
C:/Program Files (x86)/SAP BusinessObjects/SAP BusinessObjects Enterprise XI 4.0/java/lib/logging.jar
C:/Program Files (x86)/SAP BusinessObjects/SAP BusinessObjects Enterprise XI 4.0/java/lib/aspectjrt.jar
C:/Program Files (x86)/SAP BusinessObjects/SAP BusinessObjects Enterprise XI 4.0/java/lib/ceaspect.jar
C:/Program Files (x86)/SAP BusinessObjects/SAP BusinessObjects Enterprise XI 4.0/java/lib/TraceLog.jar
C:/Program Files (x86)/SAP BusinessObjects/SAP BusinessObjects Enterprise XI 4.0/java/lib/corbaidl.jar
C:/Program Files (x86)/SAP BusinessObjects/SAP BusinessObjects Enterprise XI 4.0/java/lib/ebus405.jar
我在网上搜索的所有内容都分为三类:
- 指向 SAP 网站上不再起作用的页面的链接(因此重定向到一般搜索页面),或
- 过时的信息/代码,我无法做到这一点,或者
- 应该可以工作的代码,一旦我设置好本地环境并正常工作
此外,我能找到的所有示例都是针对 Java 服务器页面的,这不是我想要的这个项目。
当我尝试运行上述代码时,我收到的错误消息甚至在它尝试连接之前是:
Exception in thread "main" java.lang.NoClassDefFoundError: org/omg/CORBA/portable/IDLEntity
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:151)
at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:802)
at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:700)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:623)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:151)
at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:802)
at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:700)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:623)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
at com.crystaldecisions.thirdparty.com.ooc.OBCORBA.ORB_impl.initializeDefaultPolicies(ORB_impl.java:369)
at com.crystaldecisions.thirdparty.com.ooc.OBCORBA.ORB_impl.initialize(ORB_impl.java:196)
at com.crystaldecisions.thirdparty.com.ooc.OBCORBA.ORB_impl.setParameters(ORB_impl.java:812)
at com.crystaldecisions.thirdparty.com.ooc.OBCORBA.ORB_impl.init(ORB_impl.java:1313)
at com.crystaldecisions.enterprise.ocaframework.idl.helper.ORBHelper.init(ORBHelper.java:57)
at com.crystaldecisions.enterprise.ocaframework.ServiceMgr.<init>(ServiceMgr.java:402)
at com.crystaldecisions.enterprise.ocaframework.ServiceMgrFactory.getServiceMgr(ServiceMgrFactory.java:66)
at com.crystaldecisions.sdk.occa.security.internal.LogonService.ensureServiceStub(LogonService.java:701)
at com.crystaldecisions.sdk.occa.security.internal.LogonService.doUserLogon(LogonService.java:885)
at com.crystaldecisions.sdk.occa.security.internal.LogonService.doUserLogon(LogonService.java:860)
at com.crystaldecisions.sdk.occa.security.internal.LogonService.userLogon(LogonService.java:240)
at com.crystaldecisions.sdk.occa.security.internal.SecurityMgr.userLogon(SecurityMgr.java:166)
at com.crystaldecisions.sdk.framework.internal.SessionMgr.logon_aroundBody0(SessionMgr.java:823)
at com.crystaldecisions.sdk.framework.internal.SessionMgr.logon_aroundBody1$advice(SessionMgr.java:523)
at com.crystaldecisions.sdk.framework.internal.SessionMgr.logon(SessionMgr.java:1)
at Main.main(Main.java:17)
Caused by: java.lang.ClassNotFoundException: org.omg.CORBA.portable.IDLEntity
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)
... 34 more
我了解从 Java 9 开始,java.CORBA 已被弃用(并在 Java 11 中被删除)。我尝试将编译器合规性和方面更改为 1.8,但没有任何更改。此外,jar 文件“ebus405.jar”包含 CORBA 类。
虽然我希望能帮助我解决此错误消息,但如果有人能告诉我更直接的方法来开始此操作,我将不胜感激。我会接受以下任何一项:
- 使用不同的 IDE(我没有绑定到 Eclipse)
- 引用不同/额外的 SDK jar
- 从不同的角度解决这个问题(例如,不同的 Java 项目类型)
【问题讨论】:
标签: java eclipse sdk sap business-objects