如何为SAP Business Objects Java SDK设置Eclipse项目

kcwpcxri  于 2023-05-12  发布在  Java
关注(0)|答案(2)|浏览(146)

我们在内部安装了SAP BO 4.2,我被告知REST没有打开。我已经编写了几个成功的. NET应用程序,使用SDK连接到我们的生产SAP框并在其上运行,现在我正在尝试编写一个Java应用程序来做同样的事情,因为Java SDK公开了更多(和必需的)功能。
我似乎无法正确设置Eclipse/Java/项目环境,甚至无法开始编码。

  • Windows 10,64位
  • Eclipse版本:2019 - 03(4.11.0)
  • Java版本:
  • openjdk版本"12.0.2" 2019 - 07 - 16
  • OpenJDK运行时环境(build 12.0.2 + 10)
  • OpenJDK 64位服务器虚拟机(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网站上不再工作的页面(因此重定向到一般搜索页面),或
1.过时的信息/代码,这样我就不能做同样的事情,或者
1.代码应该工作,一旦我得到本地环境设置和工作正常
此外,我能找到的所有示例都是针对Java Server Pages的,这不是我在这个项目中想要的。
当我尝试运行上面的代码时,甚至在它尝试连接之前,我收到的错误消息是:

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

据我所知,从Java9开始,java.CORBA已经被弃用(并在Java11中被删除)。我已经尝试将编译器兼容性和方面更改为1.8,但没有更改。另外,jar文件“ebus405.jar”包含CORBA类。
虽然我会很感激帮助过去这个错误消息,我会更感激,如果有人能告诉我一个更直接的方法来开始这一点。我会接受以下任何一种:
1.使用不同的IDE(我不依赖Eclipse)
1.引用不同/其他SDK Jars
1.从不同的Angular 解决这个问题(例如,不同的Java项目类型)

s8vozzvw

s8vozzvw1#

我认为您没有使用正确的JRE系统库。如果有疑问,使用BusinessObjects客户端安装附带的版本总是安全的。
我使用的是SAP BusinessObjects 4.1 SP 6,所以对我来说,它位于这里-“C:\Program Files(x86)\SAP BusinessObjects\SAP BusinessObjects Enterprise XI 4.0\win32_x86\jre”。根据您的版本检查相应的位置,并将其设置为Eclipse中项目的默认值,然后重试。

ki1q1bka

ki1q1bka2#

SAP肯定不支持Java 12,在BW建模工具中明确指出,Eclipse推荐的JRE是8或11,但不是12。

我不知道你是否使用这些工具,但我想这种依赖性也适用于其他情况。
SAP明确没有在任何地方说明这一点,但在之前的所有文档中,它声明只支持Oracle Java,这一点得到了多个用户体验的证实。我从来没有遇到过Oracle JDK的问题,但OpenJDK的问题。所以我建议你切换到Oracle 11 JDK。
作为最后一次尝试,按照here的建议(第6.1.1章),您可以尝试SAP专有的Java虚拟机,该虚拟机可在支持门户上获得。

相关问题