Comment configurer le projet Eclipse pour SAP Business Objects Java SDK


Nous avons SAP BO 4.2 installé en interne, et on m'a dit que REST n'est pas activé. J'ai écrit plusieurs applications. Net réussies en utilisant le SDK pour se connecter et s'exécuter sur notre boîte SAP de production, et maintenant j'essaie d'écrire une application Java pour faire la même chose, car le SDK Java expose plus de fonctionnalités (et requises).

Je n'arrive pas à configurer correctement mon environnement Eclipse/Java/project pour même commencer à coder.

Windows 10, 64 bits

Eclipse version: 2019-03 (4.11.0)

Version Java:
openjdk version "12.0.2" 2019-07-16
OpenJDK Runtime Environment (build 12.0.2+10)
OpenJDK 64-Bit Server VM (build 12.0.2+10, mode mixte, partage)

J'ai créé un nouveau "Java EE" -> "Projet Client d'application".

Je ne suis pas en mesure d'obtenir le code suivant pour "Exécuter en tant qu'application":

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();

    }

}

J'ai les bibliothèques suivantes référencées dans le chemin de construction:

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

Tout ce que j'ai cherché en ligne a classé en trois catégories:

  1. liens vers des pages sur le site de SAP qui ne fonctionnent plus (donc redirigé vers la page de recherche générale), ou
  2. informations/code obsolètes, de sorte que je ne suis pas en mesure de faire la même chose, ou
  3. code qui devrait fonctionner, une fois que l'environnement local est configuré et fonctionne correctement

De plus, tous les exemples que j'ai pu trouver sont pour les pages de serveur Java, ce qui n'est pas ce que je veux avec ce projet.

Quand j'essaie d'exécuter le code ci-dessus, le message d'erreur que je reçois, avant même qu'il essaie de se connecter, est:

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

Je comprends qu'en commençant par Java 9, java.CORBA a été obsolète (et supprimé dans Java 11). J'ai essayé de changer la conformité du compilateur et les facettes en 1.8 sans changement. De plus, le fichier jar " ebus405.jar " contient les classes CORBA.

Bien que j'apprécierais de l'aide pour dépasser ce message d'erreur, je l'apprécierais davantage si quelqu'un peut me dire une approche plus simple pour obtenir cela a commencé. Je voudrais embrasser l'un des éléments suivants:

  1. en utilisant unE différent (je ne suis pas lié à Eclipse)
  2. référencement de Jars SDK différents/supplémentaires
  3. aborder cela sous un angle différent (par exemple, un type de projet Java différent)
Author: user3826091, 2019-08-21

2 answers

SAP ne prend certainement pas en charge Java 12, et dans les outils de modélisation BW, il est clairement indiqué que les JRE recommandés pour Eclipse sont 8 ou 11, mais pas 12.

entrez la description de l'image ici

Je ne sais pas si vous utilisez ces outils, mais je suppose que cette dépendance s'applique à d'autres cas.

SAP ne le dit explicitement nulle part, mais auparavant dans toute la documentation, il était indiqué que seul Oracle Java était pris en charge, ce qui a été confirmé par plusieurs expériences utilisateur. Je ne jamais avoir de problème avec Oracle JDK mais avec OpenJDK avait. Je vous recommande donc de passer à Oracle 11 JDK.

En dernier cast, comme recommandé ici (chapitre 6.1.1), vous pouvez essayer la machine virtuelle Java propriétaire SAP, qui est disponible sur le portail de support.

 0
Author: Suncatcher, 2019-08-22 19:37:03

Je pense que vous n'utilisez pas la bibliothèque système JRE correcte. En cas de doute, il est toujours sûr d'utiliser celui fourni avec l'installation du client BusinessObjects.

J'utilise SAP BusinessObjects 4.1 SP6, donc pour moi c'est situé ici - "C:\Program Fichiers (x86) \ SAP BusinessObjects \ SAP BusinessObjects Enterprise XI 4.0 \ win32_x86 \ jre". Vérifiez l'emplacement correspondant par rapport à votre version et définissez-le par défaut pour le projet dans Eclipse, puis réessayez.

 1
Author: Goutam, 2019-08-22 08:07:30