Bonjour,
Je souhaite appeller du code java depuis un code C++. Jusqu'à la pas de problème j'arrive à acceder à ma classe Java et à appeller ma méthode:
Le truc c'est que dans mon code java, j'utilise un parser yaml qui se trouve dans yaml.jar.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 if (status == JNI_OK) { cls = (env)->FindClass("myPackage/Parse"); if(cls !=0) { mid = (env)->GetStaticMethodID( cls, "testLoadFromStream", "()I" ); if(mid !=0) { jint plop = (env)->CallStaticIntMethod(cls, mid,1); printf("Result of intMethod: %d\n", plop); } } (jvm)->DestroyJavaVM(); return 0; } else return status;
Sous Netbeans pas de problème, puisque le jar est inclus dans les librairies du projet.
Par contre lorsuqe je fais l'appel depuis le C++, il entre bien dans la fonction mais bloque sur la création du parser.
Donc je me pose la question suivante, comment puis-je spécifier à ma jvm d'utiliser yaml.jar en librairie avant d'appeller la fonction?
Mon code java:
Ma sortie m'affiche enter, et ensuite me retourne 0, n'arrivant pas à créer le parser.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 public class Parse { /** * @param args the command line arguments */ public static int testLoadFromStream() throws FileNotFoundException,YamlException { System.out.println("enter"); YamlReader reader = new YamlReader(new FileReader("C:/Projets/MaroffTest/src/test.yml")); System.out.println("reader"); reader.getConfig().setPropertyElementType(Contact.class, "address", Address.class); System.out.println("Contact"); reader.getConfig().setPropertyElementType(Address.class, "test", test.class); System.out.println("Address"); Contact contact = reader.read(Contact.class); System.out.println("Read"); System.out.println(contact.address.get(0).test.get(0).plus); return contact.address.get(0).test.get(0).plus; } }
Merci d'avance pour votre aide
Partager