【问题标题】:How to set up Eclipse project for SAP Business Objects Java SDK如何为 SAP Business Objects Java SDK 设置 Eclipse 项目
【发布时间】: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

我在网上搜索的所有内容都分为三类:

  1. 指向 SAP 网站上不再起作用的页面的链接(因此重定向到一般搜索页面),或
  2. 过时的信息/代码,我无法做到这一点,或者
  3. 应该可以工作的代码,一旦我设置好本地环境并正常工作

此外,我能找到的所有示例都是针对 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 类。

虽然我希望能帮助我解决此错误消息,但如果有人能告诉我更直接的方法来开始此操作,我将不胜感激。我会接受以下任何一项:

  1. 使用不同的 IDE(我没有绑定到 Eclipse)
  2. 引用不同/额外的 SDK jar
  3. 从不同的角度解决这个问题(例如,不同的 Java 项目类型)

【问题讨论】:

    标签: java eclipse sdk sap business-objects


    【解决方案1】:

    我认为您没有使用正确的 JRE 系统库。如有疑问,始终可以安全地使用 BusinessObjects 客户端安装附带的那个。

    我使用的是 SAP BusinessObjects 4.1 SP6,所以对我来说它位于此处 -“C:\Program Files (x86)\SAP BusinessObjects\SAP BusinessObjects Enterprise XI 4.0\win32_x86\jre”。根据您的版本检查相应的位置,并将其设置为 Eclipse 中项目的默认位置,然后重试。

    【讨论】:

    • 谢谢你,@Goutam!我没有意识到 SDK 中有一个 JRE。虽然我在 Adopt OpenJDK8.0.222.10 中工作,但我也会调查你指出的 JRE。
    【解决方案2】:

    SAP 绝对不支持 Java 12,并且在 BW 建模工具中明确指出,推荐用于 Eclipse 的 JRE 是 8 或 11,但不是 12。

    我不知道你是否使用这些工具,但我想这种依赖关系也适用于其他情况。

    SAP 明确没有在任何地方这么说,但之前在所有文档中都声明只支持 Oracle Java,这已得到多个用户体验的证实。我对 Oracle JDK 从来没有任何问题,但对 OpenJDK 却有。所以我建议你切换到 Oracle 11 JDK。

    作为最后的演员,按照here(第 6.1.1 章)的建议,您可以尝试 SAP 专有 Java 虚拟机,该虚拟机可在支持门户上获得。

    【讨论】:

    • 非常感谢@Suncatcher。昨晚深夜,我使用了 Java 1.8,错误消失了。奇怪的是,我还不得不切换到早期版本的 Eclipse,但这可能无关紧要。我翻遍了我能找到的所有文档以查看支持哪些 Java 版本,但找不到任何文档。
    • 我能够让它与 AdoptOpenJDK 8.0.222.10 一起使用。
    猜你喜欢
    • 1970-01-01
    • 2011-12-13
    • 1970-01-01
    • 1970-01-01
    • 2022-12-17
    • 1970-01-01
    • 1970-01-01
    • 2012-08-22
    • 1970-01-01
    相关资源
    最近更新 更多