From b1d25fb53c1543e1970647f191f821b91dd0ef4e Mon Sep 17 00:00:00 2001 From: Evgeniy Date: Mon, 2 Dec 2019 10:36:31 +0300 Subject: [PATCH] Ignore error when class does not have method log. Add support for human packaging, e.g. while sending class 'screenshot.Get' - screenshot was package, Get classname --- JVMLauncher.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/JVMLauncher.cpp b/JVMLauncher.cpp index 1aab6b7..e0d7ee2 100644 --- a/JVMLauncher.cpp +++ b/JVMLauncher.cpp @@ -11,6 +11,7 @@ #include #include #include +#include #include "JVMLauncher.h" #define BASE_ERRNO 7 @@ -286,6 +287,7 @@ bool JVMLauncher::validateCall() { jclass JVMLauncher::findClassForCall(std::string className) { jclass findedClass = nullptr; + std::replace(className.begin(), className.end(), '.', '/'); auto val = m_cachedClasses.find(className); if (val == m_cachedClasses.end()) { jclass neededclass = this->m_JVMEnv->FindClass(className.c_str()); @@ -293,10 +295,11 @@ jclass JVMLauncher::findClassForCall(std::string className) { findedClass = (jclass)this->m_JVMEnv->NewGlobalRef(neededclass); m_cachedClasses.insert(std::pair(className, findedClass)); this->m_JVMEnv->DeleteLocalRef(neededclass); - JNINativeMethod methods[]{ { "log", "(Ljava/lang/String;)V", (void *)&Java_Runner_log } }; // mapping table + JNINativeMethod methods[]{ { "log", "(Ljava/lang/String;)V", (void *)&Java_Runner_log } }; if (m_JVMEnv->RegisterNatives(findedClass, methods, 1) < 0) { - if (m_JVMEnv->ExceptionOccurred()) // verify if it's ok - pAsyncEvent->AddError(ADDIN_E_FAIL, JVM_LAUNCHER, L" OOOOOPS: exception when registreing natives handlers", 6); + if (m_JVMEnv->ExceptionOccurred()) { + this->m_JVMEnv->ExceptionClear(); + } } } else {