Frage zum Einführungsbeispiel

Krzys

Betreff:

Frage zum Einführungsbeispiel

 ·  Gepostet: 13.10.2011 - 23:32 Uhr  ·  #78805
Hi,

ich will ein Java Programm schreiben, welches Buchungen in einer DB speichert und in einer farbigen Liste anzeigt... da passt mir das Einführungsbeispiel ja eigentlich ganz gut. Da ich nur die Kontoauszüge will und keine Überweisungen...

Beim starten des Programms gibt er mir folgendes aus:

Bitte legen Sie jetzt die HBCI-Chipkarte ein
#
# A fatal error has been detected by the Java Runtime Environment...

Öhm, kann ich hbci4java nicht ohne HBCI-Chipkarte nutzen? Oder was läuft hier falsch?

hibiscus

Betreff:

Re: Frage zum Einführungsbeispiel

 ·  Gepostet: 14.10.2011 - 11:19 Uhr  ·  #78817
Doch, du kannst HBCI4Java mit Chipkarten nutzen - zumindest mit Karten des Typs "DDV" (wie sie beispielsweise von den Sparkassen verwendet werden). Der Zugriff auf den Kartenleser erfolgt aus HBCI4Java heraus ueber eine sog. JNI-Lib auf den CTAPI-Treiber des Kartenleser-Herstellers.

Und bei dir ist gerade die Java-VM abgestuerzt, weil es genau da zu einem Problem kam. Das kann jetzt aber viele Ursachen haben. Zum Beispiel Plattform-Inkompatibilitaeten (32Bit JNI-Lib aber 64Bit-Betriebssystem), fehlender CTAPI-Treiber, fehlende Berechtigungen.

Zur Ursachenfindung muesstest du dir schon den kompletten Stacktrace anschauen, der hinter der Meldung "A fatal error...." folgt.

Krzys

Betreff:

Re: Frage zum Einführungsbeispiel

 ·  Gepostet: 17.10.2011 - 22:42 Uhr  ·  #78876
Zitat geschrieben von hibiscus
Doch, du kannst HBCI4Java mit Chipkarten nutzen - zumindest mit Karten des Typs "DDV" (wie sie beispielsweise von den Sparkassen verwendet werden). Der Zugriff auf den Kartenleser erfolgt aus HBCI4Java heraus ueber eine sog. JNI-Lib auf den CTAPI-Treiber des Kartenleser-Herstellers.

Und bei dir ist gerade die Java-VM abgestuerzt, weil es genau da zu einem Problem kam. Das kann jetzt aber viele Ursachen haben. Zum Beispiel Plattform-Inkompatibilitaeten (32Bit JNI-Lib aber 64Bit-Betriebssystem), fehlender CTAPI-Treiber, fehlende Berechtigungen.

Zur Ursachenfindung muesstest du dir schon den kompletten Stacktrace anschauen, der hinter der Meldung "A fatal error...." folgt.
Ich habe den hbci4java-card-win32.dll Treiber in den Properties angegeben und habe als OS Win7 x86.

Ich wollte eigentlich hbci4java OHNE chipkarte nutzen. Ich will nur durch Eingabe von Kontonummer / BLZ / Pin an die Kontoauszüge kommen

Danke für die geduldige und schnelle Hilfe :)

Hier der Log Anfang

#
# A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00000000, pid=4488, tid=3032
#
# JRE version: 6.0_27-b07
# Java VM: Java HotSpot(TM) Client VM (20.2-b06 mixed mode, sharing windows-x86 )
# Problematic frame:
# C 0x00000000
#
# If you would like to submit a bug report, please visit:
# http://java.sun.com/webapps/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#

hibiscus

Betreff:

Re: Frage zum Einführungsbeispiel

 ·  Gepostet: 17.10.2011 - 22:51 Uhr  ·  #78879

Krzys

Betreff:

Re: Frage zum Einführungsbeispiel

 ·  Gepostet: 18.10.2011 - 00:03 Uhr  ·  #78881
Zitat geschrieben von hibiscus
Dann verwende doch das PIN/TAN-Verfahren. Ich kenne keine Bank, die ausschliesslich DDV-Chipkarte anbietet. Deine Bank kann ganz sicher auch PIN/TAN. Kannst du hier nachschauen: http://www.hbci-zka.de/institute/institut_auswahl.htm


Hm, ich habe das Gefühl, wir würden an einander vorbei reden. Ja, ich möchte PIN/TAN nutzen. DDV will ich nicht nutzen. Nutze ich mit hbci4java-card-win32.dll die DDV-Chipkarte, ja? Also kann ich den Properties Eintrag unberührt lassen?

Meine Bank bietet beides an.

"HBCI4Java ist eine Open-Source-Bibliothek für die Entwicklung von HBCI-fähigen Client-Anwendungen in Java: http://hbci4java.kapott.org/"; Wikipedia
Ich wollte in diesem Kontext halt HBCI4Java nutzen, um mit KTO-Nr./BLZ/PIN an die Kontoauszüge zu kommen.

Sowas wie TAN würde ich am liebsten draußen lassen, da Überweisungen nicht erwünscht sind (Nur Kontoauszüge).

hibiscus

Betreff:

Re: Frage zum Einführungsbeispiel

 ·  Gepostet: 18.10.2011 - 10:28 Uhr  ·  #78885
Zitat geschrieben von Krzys
Hm, ich habe das Gefühl, wir würden an einander vorbei reden. Ja, ich möchte PIN/TAN nutzen. DDV will ich nicht nutzen. Nutze ich mit hbci4java-card-win32.dll die DDV-Chipkarte, ja?


Ja, das ist Chipkarte. Fuer PIN/TAN musst du einen PinTan-Passport erzeugen. Schau mal in die API-Doku von HBCI4Java. Hier z.Bsp.:

http://hbci4java.kapott.org/ja…Utils.html

Krzys

Betreff:

Re: Frage zum Einführungsbeispiel

 ·  Gepostet: 23.10.2011 - 15:37 Uhr  ·  #78984
ich blick da nicht so ganz durch :oops: und das ist mir auch langsam peinlich, aber kann mir vielleicht jemand ungefähr sagen was ich (Schritt für Schritt) ändern muss an den Standard Einstellungen am Beispiel?

Mein OS ist Win 7 x86, meine Bank ist die Berliner Sparkasse und ich möchte mich mit Hilfe von Kto/BLZ/Pin einloggen und die Kontoauszüge auslesen.

Ich kopiere das Properties Template in mein Projekt-Verzeichnis unter \src. An sich ist es mir nicht schlüssig was ich da ändern sollte, damit das PIN/TAN geht.

Das einzige was ich dann wirklich geändert habe ist das einfügen der Konto-Daten in
Konto myaccount=new Konto("DE","10050000","0<KTONr>");

Zusätzlich ist da dieser RunTime Error....
Code
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00000000, pid=876, tid=4668
#
# JRE version: 6.0_29-b11
# Java VM: Java HotSpot(TM) Client VM (20.4-b02 mixed mode, sharing windows-x86 )
# Problematic frame:
# C  0x00000000
#
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#

---------------  T H R E A D  ---------------

Current thread (0x011e9800):  JavaThread "main" [_thread_in_native, id=4668, stack(0x00160000,0x001b0000)]

siginfo: ExceptionCode=0xc0000005, reading address 0x00000000

Registers:
EAX=0x00000000, EBX=0x03f822b4, ECX=0x001af7de, EDX=0x001af7df
ESP=0x001af39c, EBP=0x001af7e0, ESI=0x00000002, EDI=0x001af82a
EIP=0x00000000, EFLAGS=0x00010206

Top of Stack: (sp=0x001af39c)
0x001af39c:   011c1b34 00000000 001af7de 001af7df
0x001af3ac:   00000006 03f822b4 001af82a 03f823e4
0x001af3bc:   03f823e4 33a60006 03f822b4 00313020
0x001af3cc:   00e782f2 fffffffe 7790edae 7790ec4e
0x001af3dc:   63656a65 72614374 70612064 203a7564
0x001af3ec:   31203032 31302035 20343020 30203130
0x001af3fc:   77900031 777289d2 019bbb38 011e9928
0x001af40c:   0000ffff 011c0000 000002f8 001af4e0 

Instructions: (pc=0x00000000)
0xffffffe0:   


Register to memory mapping:

EAX=0x00000000 is an unknown value
EBX=0x03f822b4 is an unknown value
ECX=0x001af7de is pointing into the stack for thread: 0x011e9800
EDX=0x001af7df is pointing into the stack for thread: 0x011e9800
ESP=0x001af39c is pointing into the stack for thread: 0x011e9800
EBP=0x001af7e0 is pointing into the stack for thread: 0x011e9800
ESI=0x00000002 is an unknown value
EDI=0x001af82a is pointing into the stack for thread: 0x011e9800


Stack: [0x00160000,0x001b0000],  sp=0x001af39c,  free space=316k
Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j  org.kapott.hbci.passport.HBCIPassportDDV.closeCT()V+0
j  org.kapott.hbci.passport.HBCIPassportDDV.<init>(Ljava/lang/Object;)V+376
v  ~StubRoutines::call_stub
j  sun.reflect.NativeConstructorAccessorImpl.newInstance0(Ljava/lang/reflect/Constructor;[Ljava/lang/Object;)Ljava/lang/Object;+0
j  sun.reflect.NativeConstructorAccessorImpl.newInstance([Ljava/lang/Object;)Ljava/lang/Object;+72
j  sun.reflect.DelegatingConstructorAccessorImpl.newInstance([Ljava/lang/Object;)Ljava/lang/Object;+5
j  java.lang.reflect.Constructor.newInstance([Ljava/lang/Object;)Ljava/lang/Object;+92
j  org.kapott.hbci.passport.AbstractHBCIPassport.getInstance(Ljava/lang/String;Ljava/lang/Object;)Lorg/kapott/hbci/passport/HBCIPassport;+117
j  org.kapott.hbci.passport.AbstractHBCIPassport.getInstance(Ljava/lang/Object;)Lorg/kapott/hbci/passport/HBCIPassport;+25
j  org.kapott.hbci.tools.AnalyzeReportOfTransactions.main([Ljava/lang/String;)V+27
v  ~StubRoutines::call_stub

---------------  P R O C E S S  ---------------

Java Threads: ( => current thread )
  0x019d7c00 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=5256, stack(0x03ce0000,0x03d30000)]
  0x019ca800 JavaThread "C1 CompilerThread0" daemon [_thread_blocked, id=5204, stack(0x03c90000,0x03ce0000)]
  0x019c9800 JavaThread "Attach Listener" daemon [_thread_blocked, id=5940, stack(0x03c40000,0x03c90000)]
  0x019c8800 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=2532, stack(0x03bf0000,0x03c40000)]
  0x019be800 JavaThread "Finalizer" daemon [_thread_blocked, id=5592, stack(0x03ba0000,0x03bf0000)]
  0x019bc800 JavaThread "Reference Handler" daemon [_thread_blocked, id=2732, stack(0x03b50000,0x03ba0000)]
=>0x011e9800 JavaThread "main" [_thread_in_native, id=4668, stack(0x00160000,0x001b0000)]

Other Threads:
  0x01980000 VMThread [stack: 0x03b00000,0x03b50000] [id=4860]
  0x019d9000 WatcherThread [stack: 0x03d30000,0x03d80000] [id=5356]

VM state:not at safepoint (normal execution)

VM Mutex/Monitor currently owned by a thread: None

Heap
 def new generation   total 4928K, used 3452K [0x239a0000, 0x23ef0000, 0x28ef0000)
  eden space 4416K,  78% used [0x239a0000, 0x23cff130, 0x23df0000)
  from space 512K,   0% used [0x23df0000, 0x23df0000, 0x23e70000)
  to   space 512K,   0% used [0x23e70000, 0x23e70000, 0x23ef0000)
 tenured generation   total 10944K, used 0K [0x28ef0000, 0x299a0000, 0x339a0000)
   the space 10944K,   0% used [0x28ef0000, 0x28ef0000, 0x28ef0200, 0x299a0000)
 compacting perm gen  total 12288K, used 854K [0x339a0000, 0x345a0000, 0x379a0000)
   the space 12288K,   6% used [0x339a0000, 0x33a75840, 0x33a75a00, 0x345a0000)
    ro space 10240K,  51% used [0x379a0000, 0x37ecd0b8, 0x37ecd200, 0x383a0000)
    rw space 12288K,  54% used [0x383a0000, 0x38a39570, 0x38a39600, 0x38fa0000)

Code Cache  [0x01a50000, 0x01ae0000, 0x03a50000)
 total_blobs=201 nmethods=70 adapters=67 free_code_cache=32966080 largest_free_block=0

Dynamic libraries:
0x00400000 - 0x00424000   C:\Program Files\Java\jre6\bin\javaw.exe
0x778b0000 - 0x779ed000   C:\Windows\SYSTEM32\ntdll.dll
0x774c0000 - 0x77594000   C:\Windows\system32\kernel32.dll
0x75aa0000 - 0x75aea000   C:\Windows\system32\KERNELBASE.dll
0x77420000 - 0x774c0000   C:\Windows\system32\ADVAPI32.dll
0x76290000 - 0x7633c000   C:\Windows\system32\msvcrt.dll
0x763f0000 - 0x76409000   C:\Windows\SYSTEM32\sechost.dll
0x77360000 - 0x77401000   C:\Windows\system32\RPCRT4.dll
0x761c0000 - 0x76289000   C:\Windows\system32\USER32.dll
0x76340000 - 0x7638e000   C:\Windows\system32\GDI32.dll
0x77410000 - 0x7741a000   C:\Windows\system32\LPK.dll
0x75e20000 - 0x75ebd000   C:\Windows\system32\USP10.dll
0x761a0000 - 0x761bf000   C:\Windows\system32\IMM32.DLL
0x75d00000 - 0x75dcc000   C:\Windows\system32\MSCTF.dll
0x7c340000 - 0x7c396000   C:\Program Files\Java\jre6\bin\msvcr71.dll
0x6d7f0000 - 0x6da9f000   C:\Program Files\Java\jre6\bin\client\jvm.dll
0x73e60000 - 0x73e92000   C:\Windows\system32\WINMM.dll
0x75930000 - 0x7597b000   C:\Windows\system32\apphelp.dll
0x6d7a0000 - 0x6d7ac000   C:\Program Files\Java\jre6\bin\verify.dll
0x6d320000 - 0x6d33f000   C:\Program Files\Java\jre6\bin\java.dll
0x6d7e0000 - 0x6d7ef000   C:\Program Files\Java\jre6\bin\zip.dll
0x6d780000 - 0x6d788000   C:\Program Files\Java\jre6\bin\sunmscapi.dll
0x75be0000 - 0x75cfc000   C:\Windows\system32\CRYPT32.dll
0x75a70000 - 0x75a7c000   C:\Windows\system32\MSASN1.dll
0x011c0000 - 0x011e0000   D:\Eigene Dateien\Workspace\hbci4java-2.5.12-bin\lib\hbci4java-card-win32.dll
0x779f0000 - 0x779f5000   C:\Windows\system32\PSAPI.DLL

VM Arguments:
jvm_args: -Dfile.encoding=Cp1252 
java_command: org.kapott.hbci.tools.AnalyzeReportOfTransactions
Launcher Type: SUN_STANDARD

Environment Variables:
CLASSPATH=.;C:\Program Files\Java\jre6\lib\ext\QTJava.zip
PATH=C:/Program Files/Java/jre6/bin/client;C:/Program Files/Java/jre6/bin;C:/Program Files/Java/jre6/lib/i386;C:\Program Files\Common Files\ArcSoft\Bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\ATI Technologies\ATI.ACE\Core-Static;C:\Program Files\MATLAB\R2010a\runtime\win32;C:\Program Files\MATLAB\R2010a\bin;C:\Program Files\QuickTime\QTSystem\;C:\Program Files\eclipse;
USERNAME=Krz
OS=Windows_NT
PROCESSOR_IDENTIFIER=x86 Family 6 Model 15 Stepping 6, GenuineIntel



---------------  S Y S T E M  ---------------

OS: Windows 7 Build 7600 

CPU:total 2 (2 cores per cpu, 1 threads per core) family 6 model 15 stepping 6, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3

Memory: 4k page, physical 3668472k(1424156k free), swap 7335180k(4620208k free)

vm_info: Java HotSpot(TM) Client VM (20.4-b02) for windows-x86 JRE (1.6.0_29-b11), built on Oct  3 2011 01:01:08 by "java_re" with MS VC++ 7.1 (VS2003)

time: Sun Oct 23 15:23:31 2011
elapsed time: 0 seconds

hibiscus

Betreff:

Re: Frage zum Einführungsbeispiel

 ·  Gepostet: 23.10.2011 - 23:30 Uhr  ·  #78992
Dem Log zufolge verwendest du immer noch den DDV-Passport fuer Chipkarte und nicht PIN/TAN.

Krzys

Betreff:

Re: Frage zum Einführungsbeispiel

 ·  Gepostet: 24.10.2011 - 01:03 Uhr  ·  #78996
Und wie mache ich das? Muss ich alle Einträge bis auf PIN/TAN aus den Properties rauslöschen oder... ?

Code
public final class AnalyzeReportOfTransactions 
{
    private static class MyHBCICallback
        extends HBCICallbackConsole
    {
        public void callback(HBCIPassport passport,int reason,String msg,int dataType,StringBuffer retData)
        {
            System.out.println("Callback für folgendes Passport: "+passport.getClientData("init").toString());
            super.callback(passport,reason,msg,dataType,retData);
        }
    }
    private static HBCIPassport passport;
    private static HBCIHandler  hbciHandle;

    public static void main(String[] args)
        throws Exception
    {
        // HBCI4Java initialisieren
        HBCIUtils.init(HBCIUtils.loadPropertiesFile(new FileSystemClassLoader(),"\\hbci.properties"),
                       new MyHBCICallback());

        Object passportDescription="Passport für Kontoauszugs-Demo";
        passport=AbstractHBCIPassport.getInstance(passportDescription);

        try {
            String version=passport.getHBCIVersion();
            hbciHandle=new HBCIHandler((version.length()!=0)?version:"plus",passport);

            HBCIJob auszug=hbciHandle.newJob("KUmsAll");
            auszug.setParam("my",myaccount);
            auszug.addToQueue();

            HBCIExecStatus ret=hbciHandle.execute();

            GVRKUms result=(GVRKUms)auszug.getJobResult();

            if (result.isOK()) {
                System.out.println(result.toString());
                
                List lines=result.getFlatData();
                int  numof_lines=lines.size();

                for (Iterator j=lines.iterator(); j.hasNext(); ) {
                    GVRKUms.UmsLine entry=(GVRKUms.UmsLine)j.next();

                    List usages=entry.usage;
                    int  numof_usagelines=usages.size();

                    for (Iterator k=usages.iterator(); k.hasNext(); ) {
                        String usageline=(String)k.next();

                      
                        if (usageline.equals("Rechnung 12345")) { 
                           
                        }
                    }
                }
                
            } else {
                System.out.println("Job-Error");
                System.out.println(result.getJobStatus().getErrorString());
                System.out.println("Global Error");
                System.out.println(ret.getErrorString());
            }
        } finally {
            if (hbciHandle!=null) {
                hbciHandle.close();
            } else if (passport!=null) {
                passport.close();
            }
        }
    }
}

hibiscus

Betreff:

Re: Frage zum Einführungsbeispiel

 ·  Gepostet: 24.10.2011 - 10:28 Uhr  ·  #79001

Krzys

Betreff:

Re: Frage zum Einführungsbeispiel

 ·  Gepostet: 24.10.2011 - 23:01 Uhr  ·  #79011
Hey, jetzt startet es zumindest :)

Es kann aber kein Passport des Typs PinTan instanziiert werden...
Code
Exception in thread "main" org.kapott.hbci.exceptions.HBCI_Exception: kann kein Passport des Typs PinTan instanziieren
  at org.kapott.hbci.passport.AbstractHBCIPassport.getInstance(AbstractHBCIPassport.java:714)
  at org.kapott.hbci.tools.AnalyzeReportOfTransactions.main(AnalyzeReportOfTransactions.java:106)
Caused by: java.lang.reflect.InvocationTargetException
  at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
  at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
  at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
  at java.lang.reflect.Constructor.newInstance(Unknown Source)
  at org.kapott.hbci.passport.AbstractHBCIPassport.getInstance(AbstractHBCIPassport.java:709)
  ... 1 more
Caused by: org.kapott.hbci.exceptions.HBCI_Exception: *** saving of passport file failed
  at org.kapott.hbci.passport.HBCIPassportPinTan.saveChanges(HBCIPassportPinTan.java:260)
  at org.kapott.hbci.passport.HBCIPassportPinTan.<init>(HBCIPassportPinTan.java:118)
  ... 6 more
Caused by: java.io.IOException: Das System kann den angegebenen Pfad nicht finden
  at java.io.WinNTFileSystem.createFileExclusively(Native Method)
  at java.io.File.checkAndCreate(Unknown Source)
  at java.io.File.createTempFile(Unknown Source)
  at org.kapott.hbci.passport.HBCIPassportPinTan.saveChanges(HBCIPassportPinTan.java:224)
  ... 7 more


Die Eingaben waren DE, 10050000, PinTanUrl aus http://www.hbci-zka.de/institute/institut_detail.php, Base64, KTO-Nr, KTO-Nr und halt 2 mal ein Passwort.

hibiscus

Betreff:

Re: Frage zum Einführungsbeispiel

 ·  Gepostet: 24.10.2011 - 23:27 Uhr  ·  #79012