[JNI] Appel de constructeur ?
J'ai un classe :
Code:
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:
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:
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 ?