[java & C++] JNI CallObjectMethod en newObject probleem

Pagina: 1
Acties:

  • comprobot
  • Registratie: Augustus 2000
  • Laatst online: 07-08 19:54
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
native public int openRekening (String naam, double saldo) throws Exception;
   /*{
      if (nrRek == maxRek)
         throw new Exception ("Maximaal aantal rekeningen bereikt");
      RekeningHouder rh = zoekRekHouder (naam);
   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      if (rh == null)
      {  int rekNr = nrRek + 1000;
         BankRekening br   = new BankRekening (rekNr, saldo);
         rekHouders[nrRek] = new RekeningHouder (naam, br);
         nrRek += 1;
         return rekNr;
      }
      return 0;
   }*/

Het is java code. Ik moet dus codes in C++ vertalen. Het is een opdracht dat ik JINI moet maken.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    jmethodID mid = 
         (env)->GetMethodID(cls, "zoekRekHouder", "(Ljava/lang/String;)LRekeningHouder;");
     if (mid == NULL) {
        cout << "probleem?" << endl;
         return 0;
     }
     cout << "Tja ?" << endl;
     jmethodID rhmid=(env)->GetMethodID(Lrh, "<init>", "(Ljava/lang/String;LBankRekening;)V");
     if (rhmid == NULL) {
        cout << "probleem? rh?" << endl;
         return 0;
     }
     jobject rh = env->NewObject(Lrh,rhmid);

//*************************************
//Deze opdracht crasht door foutmelding
//************************************
     rh = (jobject)(env)->CallObjectMethod(jobj,mid,naam);
//  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ???


Ik heb met CallObjectMethod en NewObject geprobeerd en ik heb deze boel getest. Maar het lukt helaas met foutmelding.

Ik wil toelichting waarom heb ik fout gemaakt?

www.tiedragon.nl


  • Jelmer
  • Registratie: Maart 2000
  • Nu online
Edward, het is JNI :P
code:
1
rh = env->CallObjectMethod(jobj,mid,naam);


Gaat vermoedelijk beter werken (C++ remember ;))

[ Voor 9% gewijzigd door Jelmer op 26-11-2002 19:06 ]


  • comprobot
  • Registratie: Augustus 2000
  • Laatst online: 07-08 19:54
klopt... ik vergist ...:)

Volgens compiler is de code wel goed. Maar het blijft nog een probleem.

Als ik met Java Bank start, dan krijg ik een foutmelding:

Unexpected Signal : EXCEPTION_ACCESS_VIOLATION occurred at PC=0x6D393C07
Function=[Unknown.]
Library=C:\jdk1.1.7B\jre\bin\client\jvm.dll

NOTE: We are unable to locate the function name symbol for the error
just occurred. Please refer to release documentation for possible
reason and solutions.


Current Java thread:
at Bank.openRekening(Native Method)
at BankGUI.<init>(BankGUI.java:112)
at SimpelBank.main(SimpelBank.java:27)

Daar heb ik een trace gedaan. ik heb een fout gevonden.

[ Voor 94% gewijzigd door comprobot op 26-11-2002 19:15 ]

www.tiedragon.nl


  • Jelmer
  • Registratie: Maart 2000
  • Nu online
Gebruik je nog steeds jdk 1.1.7b?? Misschien is het sowieso handig om te upgraden naar j2sdk1.4

Zou je trouwens even de hele methode kunnen posten?? Want er zit ergens een null-pointer, en sommige variablen kan ik nu nog niet thuis brengen.