У меня есть функция Java, которая возвращает одиночный экземпляр класса
public static synchronized MyClass getInstance() throws MyClassException{
if (instance == NULL){
// create
}
return instance;
}
Я хочу вызвать это через код C ++, но когда я это сделаю, он возвращает NoSuchMethodError.
cls = jenv->FindClass("MyClass");
if (cls == NULL)
{
//error handling
}
mid = jenv->GetStaticMethodID(cls, "getInstance", "()LMyClass");
if (mid == NULL)
{
//error handling
}
Когда я бегу:
javap -s -p on MyClass, I get the signature:
public static synchronized MyClass getInstance() throws MyClassException;
Signature: ()LMyClass;
Если я изменю подпись функции на void в классе Java, вызов GetStaticMethodID будет работать как положено.
Нужно ли устанавливать объект задания, чтобы ожидать возвращаемое значение от вызова?
Возможно ли это без предварительного вызова GetStaticMethodID?