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:

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;
Le truc c'est que dans mon code java, j'utilise un parser yaml qui se trouve dans yaml.jar.
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:

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;
 
    }
}
Ma sortie m'affiche enter, et ensuite me retourne 0, n'arrivant pas à créer le parser.

Merci d'avance pour votre aide