Bitte wähle nachfolgend aus, welche Beiträge auf dieser Themenseite auf dem Ausdruck ausgegeben werden sollen. Um dies zu tun markiere bitte die Checkbox auf der linken Seite der Posts, die im Ausdruck berücksichtigt werden sollen und klicke anschließend ganz unten auf der Seite auf den Button "Drucken".

Client Code Programmierung

NullPointerException

nathaniellsfreak

Betreff:

Client Code Programmierung

 ·  Gepostet: 27.04.2017 - 22:23 Uhr  ·  #132636
Hallo,

ich versuche gerade einen Client zu programmieren. Bei mir wird der folgende Fehler erzeugt:

Code

Exception in thread "main" java.lang.NullPointerException
  at org.kapott.hbci.manager.HBCIUtilsInternal.getLocMsg(HBCIUtilsInternal.java:116)
  at org.kapott.hbci.manager.HBCIUtilsInternal.getLocMsg(HBCIUtilsInternal.java:133)
  at org.kapott.hbci.manager.HBCIUtilsInternal.getLocMsg(HBCIUtilsInternal.java:128)
  at org.kapott.hbci.manager.HBCIUtils.getParam(HBCIUtils.java:1158)
  at org.kapott.hbci.manager.HBCIUtils.getParam(HBCIUtils.java:1191)
  at org.kapott.hbci.passport.HBCIPassportPinTan.<init>(HBCIPassportPinTan.java:92)
  at com.mycompany.hbcitest.Main.main(Main.java:74)


Mein Code sieht folgendermaßen aus:
Code

private static class MyHBCICallback
        extends HBCICallbackConsole
    {
        public void callback(HBCIPassport passport,int reason,String msg,int dataType,StringBuffer retData)
        {
            if (reason == HBCICallback.CLOSE_CONNECTION || reason == HBCICallback.NEED_CONNECTION)
                return;
            
            System.out.println("Callback für folgendes Passport: "+passport.getClientData("init").toString() + ", reason=" + reason);
            super.callback(passport,reason,msg,dataType,retData);
        }
}

public static void main(String[] args) throws Exception {

Properties props = new Properties();
        
        // BLZ
        props.put(HBCICallback.NEED_BLZ,          "xxxx");
        props.put(HBCICallback.NEED_CUSTOMERID,   "xxxxxx");
        props.put(HBCICallback.NEED_HOST,         "https://xxxxx/cgi-bin/hbciservlet");
        props.put(HBCICallback.NEED_PT_PIN,       "password");
        props.put(HBCICallback.NEED_USERID,       "username");
        props.put(HBCICallback.NEED_PT_SECMECH,   HBCIVersion.HBCI_220.getId());
        props.put(HBCICallback.NEED_COUNTRY,      "DE");
        props.put(HBCICallback.NEED_FILTER,       "Base64");
        
        //HBCIPassportPinTan passport = (HBCIPassportPinTan) AbstractHBCIPassport.getInstance();
        HBCIPassportPinTan passport = new HBCIPassportPinTan("");
        HBCIHandler handler = null; // = new HBCIHandler(HBCIVersion.HBCI_220.getId(), passport);
        
        // HBCI4Java initialisieren
        //HBCIUtils.loadPropertiesFile(new FileSystemClassLoader(),"/home/jonas/java/hbci/jw.hbci4java.properties")
        HBCIUtils.init(props, new MyHBCICallback());
        
         // Nutzer-Passport initialisieren
        //Object passportDescription = "Passport für Kontoauszugs-Demo";
        //passport = AbstractHBCIPassport.getInstance(passportDescription);

         try {
            // ein HBCI-Handle für einen Nutzer erzeugen
            String version = passport.getHBCIVersion();
            
            //hbciHandle=new HBCIHandler("300", passport);
             handler = new HBCIHandler((version.length()!=0)?version:"plus",passport);

            System.out.println("Alle Geschäftsvorfälle in HBCI4Java: " + handler.getKernel().getAllLowlevelJobs().toString());
            System.out.println("Unterstützte Geschäftsvorfälle der Bank: " + handler.getSupportedLowlevelJobs().toString());
            
            //"Trockentest" des Umsatzparsers mit vorgebenen Daten
            //test_ums(hbciHandle, "/home/jonas/java/hbci/msg536.txt");
            //test_ums(hbciHandle, "/home/jonas/java/hbci/msg536_hbci-zka.txt");
            
            //Konten ausgeben
            System.out.println("Kontenliste:");
            System.out.println("------------");
            Konto[] konten = passport.getAccounts();
            for (int i=0; i<konten.length; i++) {
                System.out.println("Konto " + i + ":  " + konten[i]);
            }            
            
            /*BufferedReader rd = new BufferedReader(new InputStreamReader(System.in));
            String line;
            int umsatzkto=-1, depotkto=-1;
            
            System.out.print("Bitte Konto für Umsatzliste eingeben (-1, um zu überspringen): ");
            do {
                line = rd.readLine();
                try {
                    umsatzkto = Integer.parseInt(line);
                    if (umsatzkto >= -1 && umsatzkto < konten.length) {
                        break;
                    } else {
                        System.out.println("Ungültiges Konto: " + line);
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            } while (line != null);
            System.out.print("Bitte Konto für Depotliste eingeben (-1, um zu überspringen): ");
            do {
                line = rd.readLine();
                try {
                    depotkto = Integer.parseInt(line);
                    if (depotkto >= -1 && depotkto < konten.length) {
                        break;
                    } else {
                        System.out.println("Ungültiges Konto: " + line);
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            } while (line != null);
            
            // Umsätze auflisten (als Demo, dass es grundsätzlich funktioniert)
            if (umsatzkto >= 0)
                analyzeReportOfTransactions(passport, handler, konten[umsatzkto]);
            
            // Depotinhalt auflisten
            if (depotkto >= 0)
                analyzeDepot(passport, handler, konten[depotkto]);
            */
        } finally {
            if (handler!=null) {
                handler.close();
            } else if (passport!=null) {
                passport.close();
            }
}



}



Weiß Jemand woran das liegt?

Raimund Sichmann

Betreff:

Re: Client Code Programmierung

 ·  Gepostet: 28.04.2017 - 08:16 Uhr  ·  #132637
Ich kenne Java nicht, aber mein Suchdienst meint:
Zitat
Eine NullPointerException tritt auf, wenn du eine Methode auf einem Objekt aufrufst, dieses Objekt aber nicht vorhanden ist. Die Variable, die auf das Objekt verweisen sollte, ist null. Daher NullPointerException.

Vermutlich wärst du in einem speziellen Java-Forum besser aufgehoben.
Gruß
Raimund

hibiscus

Betreff:

Re: Client Code Programmierung

 ·  Gepostet: 28.04.2017 - 09:16 Uhr  ·  #132640