L
lionk
Есть Ява-библиотека, которая работает с функциями спрятанными в ДЛЛ.
Делаю её отображение в LS-библиотеке, для удобства, вот функция которую вызываю:
Так вот проблема:
Если я выполняю LS-функцию в "Действии" или событии формы всё работает, можно даже по несколько раз подряд запускать.
Если ls-функцию положить в "Агента" - то получаю ошибку "library is alredy loaded in anover ClassLoader", если эту ls-функцию уже хоть раз вызывали (например в действии или событии формы).
Если к ls-функции не было обращений, и вызвать её через агента, то она один раз отработает, и но при следующем запуске выдаст ошибку "о занятой библиотеке". НО из "действяи" будет продолжать работать.
В чём дело?
Java:
class JavaDLL {
public native int Execute(); //функция в ДЛЛ
static {
System.loadLibrary("mydll"); // подключил ДЛЛ
}
}
public class HASP {
private JavaDLL oHASP;
public int iniHASP() {
oHASP = new JavaDLL(); //создал объект
int ret = oHASP.Execute(); //выполнил
oHASP = null; //обнулил чтобы GC освободил ресурс !!!
System.gc(); // напомнил
return ret;
}
}
Делаю её отображение в LS-библиотеке, для удобства, вот функция которую вызываю:
Visual Basic:
' js, jHASPClass, jHASPObject - глобальные чтобы при вызове на форме не инициализировать по несколько раз
If js Is Nothing Then
Set js = New JAVASESSION
End If
If jHASPClass Is Nothing Then
Set jHASPClass = js.GetClass("HASP")
End If
If jHASPObject Is Nothing Then
Set jHASPObject = jHASPClass.CreateObject()
End If
Call jHASPObject.iniHASP()
Так вот проблема:
Если я выполняю LS-функцию в "Действии" или событии формы всё работает, можно даже по несколько раз подряд запускать.
Если ls-функцию положить в "Агента" - то получаю ошибку "library is alredy loaded in anover ClassLoader", если эту ls-функцию уже хоть раз вызывали (например в действии или событии формы).
Если к ls-функции не было обращений, и вызвать её через агента, то она один раз отработает, и но при следующем запуске выдаст ошибку "о занятой библиотеке". НО из "действяи" будет продолжать работать.
В чём дело?