J'ai un classe :
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
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
 
package be.manex.test;
 
public class Processus {
 
    private int _pid;
    private String _name;
 
    public Processus(){
 
    }
 
    public Processus(String name){
        _name = name;
 
    }
 
    public Processus(int pid) {
        _pid = pid;
    }
 
    public Processus(String name, int pid) {
        _name = name;
        _pid = pid;
    }
 
    public String getName() {
        return _name;
    }
 
    public void setName(String name) {
        _name = name;
    }
 
    public int getPid() {
        return _pid;
    }
 
    public void setPid(int pid) {
        _pid = pid;
    }
}

que j'aimerai instancie dans du JNI :

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
23
24
25
jobject ProcessToJava(JNIEnv *env, TASK_LIST ps ){
 
 
 int i = 0, size;
  char outbuf[MAX_PATH];
  jobject result;
  jclass processClass;
  jmethodID cid;
 
 
  processClass = (*env)->FindClass(env, "Lbe/manex/test/Processus;");
 
  if(processClass == NULL){
    return NULL;
  }
 
  cid = (*env)->GetMethodID(env, processClass, "<init>", "([C)V");
 
  if(cid == NULL) 
      return NULL;
 
 
  result = (*env)->NewObject(env, processClass, cid);
 
}

Mais j'ai :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
Exception in thread "main" java.lang.NoSuchMethodError: <init>
	at ProcessHelper.getFirstProcessus(Native Method)
	at ProcessHelper.main(ProcessHelper.java:27)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)
Or, j'ai suivi ( en modifiant un peu certes ) un truc dans un livre.

Le constructeur est bien "<init>" non ?