Сообщение Re[8]: JNI Attach от 04.11.2024 14:08
Изменено 04.11.2024 14:09 Pavel Dvorkin
Re[8]: JNI Attach
Здравствуйте, ·, Вы писали:
·>Так ведь тут не приаттачиться к VM из "главного" приложения и догрузить туда еще пачку JAR, а создать новый класслоадер с новыми источниками классов. Разница принципиальная.
Ну и что ? Надо как-то из библиотеки/плугина вызывать некий метод из java класса, а он пусть делает то, что в
public C LoadClass(String directory, String classpath, Class<C> parentClass) throws ClassNotFoundException {
Надо новый класслоадер делать — пусть делает, какая разница ?
·>"Ну может, тогда и не нужен GetJavaVM" — верно, что я сразу и сказал.
Я в первом же ответе написал, что отнюдь не специалист по JNI. И то, что JNIEnv передается в любой метод, я просто не знал. Если так, то все еще проще.
PD>> А что делать — jclass cls2 = env->FindClass("MyTest"); // try to find the class
·>ИЧСХ тут никакого "догрузить туда еще пачку JAR" нет. Классы будут искаться только из текущей запущенной VM, ничего догруженного тут быть не может.
Ну тут я не понимаю. Я же дал ссылку, где из directory их загружают.
Here is some code that will help you dynamically load a new class given the path to its jar file.
https://stackabuse.com/example-loading-a-java-class-at-runtime/
Там неверно ?
·>Так ведь тут не приаттачиться к VM из "главного" приложения и догрузить туда еще пачку JAR, а создать новый класслоадер с новыми источниками классов. Разница принципиальная.
Ну и что ? Надо как-то из библиотеки/плугина вызывать некий метод из java класса, а он пусть делает то, что в
public C LoadClass(String directory, String classpath, Class<C> parentClass) throws ClassNotFoundException {
Надо новый класслоадер делать — пусть делает, какая разница ?
·>"Ну может, тогда и не нужен GetJavaVM" — верно, что я сразу и сказал.
Я в первом же ответе написал, что отнюдь не специалист по JNI. И то, что JNIEnv передается в любой метод, я просто не знал. Если так, то все еще проще.
PD>> А что делать — jclass cls2 = env->FindClass("MyTest"); // try to find the class
·>ИЧСХ тут никакого "догрузить туда еще пачку JAR" нет. Классы будут искаться только из текущей запущенной VM, ничего догруженного тут быть не может.
Ну тут я не понимаю. Я же дал ссылку, где из directory их загружают.
Here is some code that will help you dynamically load a new class given the path to its jar file.
https://stackabuse.com/example-loading-a-java-class-at-runtime/
Там неверно ?
Re[8]: JNI Attach
Здравствуйте, ·, Вы писали:
·>Так ведь тут не приаттачиться к VM из "главного" приложения и догрузить туда еще пачку JAR, а создать новый класслоадер с новыми источниками классов. Разница принципиальная.
Ну и что ? Надо как-то из C/C++ библиотеки/плугина вызывать некий метод из java класса, а он пусть делает то, что в
public C LoadClass(String directory, String classpath, Class<C> parentClass) throws ClassNotFoundException {
Надо новый класслоадер делать — пусть делает, какая разница ?
·>"Ну может, тогда и не нужен GetJavaVM" — верно, что я сразу и сказал.
Я в первом же ответе написал, что отнюдь не специалист по JNI. И то, что JNIEnv передается в любой метод, я просто не знал. Если так, то все еще проще.
PD>> А что делать — jclass cls2 = env->FindClass("MyTest"); // try to find the class
·>ИЧСХ тут никакого "догрузить туда еще пачку JAR" нет. Классы будут искаться только из текущей запущенной VM, ничего догруженного тут быть не может.
Ну тут я не понимаю. Я же дал ссылку, где из directory их загружают.
Here is some code that will help you dynamically load a new class given the path to its jar file.
https://stackabuse.com/example-loading-a-java-class-at-runtime/
Там неверно ?
·>Так ведь тут не приаттачиться к VM из "главного" приложения и догрузить туда еще пачку JAR, а создать новый класслоадер с новыми источниками классов. Разница принципиальная.
Ну и что ? Надо как-то из C/C++ библиотеки/плугина вызывать некий метод из java класса, а он пусть делает то, что в
public C LoadClass(String directory, String classpath, Class<C> parentClass) throws ClassNotFoundException {
Надо новый класслоадер делать — пусть делает, какая разница ?
·>"Ну может, тогда и не нужен GetJavaVM" — верно, что я сразу и сказал.
Я в первом же ответе написал, что отнюдь не специалист по JNI. И то, что JNIEnv передается в любой метод, я просто не знал. Если так, то все еще проще.
PD>> А что делать — jclass cls2 = env->FindClass("MyTest"); // try to find the class
·>ИЧСХ тут никакого "догрузить туда еще пачку JAR" нет. Классы будут искаться только из текущей запущенной VM, ничего догруженного тут быть не может.
Ну тут я не понимаю. Я же дал ссылку, где из directory их загружают.
Here is some code that will help you dynamically load a new class given the path to its jar file.
https://stackabuse.com/example-loading-a-java-class-at-runtime/
Там неверно ?