diff --git a/src/java/call.cc b/src/java/call.cc index 2be084d..454ccc3 100644 --- a/src/java/call.cc +++ b/src/java/call.cc @@ -50,62 +50,6 @@ namespace PW3270_NAMESPACE { if(jvm || load_jvm(widget)) { v3270_set_script(widget,'J',TRUE); -/* - - gchar * dirname = g_path_get_dirname(filename); - gchar * classname = g_path_get_basename(filename); - - gchar * ptr = strrchr(classname,'.'); - if(ptr) { - *ptr = 0; - } - - gchar * classpath; - -#ifdef _WIN32 - - char buffer[1024]; - gchar * exports; - - if(GetModuleFileName(NULL,buffer,sizeof(buffer)) < sizeof(buffer)) { - - gchar * ptr = strrchr(buffer,G_DIR_SEPARATOR); - if(ptr) { - *ptr = 0; - exports = g_build_filename(buffer,"jvm-exports",NULL); - } else { - exports = g_build_filename(".","jvm-exports",NULL); - } - - - } else { - - exports = g_build_filename(".","jvm-exports",NULL); - - } - - debug("myDir=%s",myDir); - - g_mkdir_with_parents(exports,0777); - -#ifdef DEBUG - classpath = g_strdup_printf("%s;%s;.bin/java",dirname,exports); -#else - classpath = g_strdup_printf("%s;%s",dirname,exports); -#endif - - g_free(exports); -#else - -#ifdef DEBUG - classpath = g_strdup_printf("%s:%s:.bin/java",dirname,JARDIR); -#else - classpath = g_strdup_printf("%s:%s",dirname,JARDIR); -#endif - -#endif // _WIN32 - -*/ try { @@ -158,7 +102,38 @@ namespace PW3270_NAMESPACE { env->CallStaticVoidMethod(cls, mid, args); // Check for exception + jthrowable exc = env->ExceptionOccurred(); + env->ExceptionClear(); + + if (exc) { + jclass throwable_class = env->FindClass("java/lang/Throwable"); + + jmethodID jni_getMessage = env->GetMethodID(throwable_class,"getMessage","()Ljava/lang/String;"); + jstring j_msg = (jstring) env->CallObjectMethod(exc,jni_getMessage); + + GtkWidget *dialog = gtk_message_dialog_new( GTK_WINDOW(gtk_widget_get_toplevel(widget)), + GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_ERROR, + GTK_BUTTONS_OK_CANCEL, + _( "Java application \"%s\" has failed." ), classname ); + gtk_window_set_title(GTK_WINDOW(dialog), _( "Java error" )); + + if(!env->IsSameObject(j_msg,NULL)) { + + const char * msg = env->GetStringUTFChars(j_msg, 0); + + gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(dialog),"%s",msg); + + env->ReleaseStringUTFChars( j_msg, msg); + } + + if(gtk_dialog_run(GTK_DIALOG (dialog)) == GTK_RESPONSE_CANCEL) + gtk_main_quit(); + gtk_widget_destroy(dialog); + + + } // And finish env->DeleteLocalRef(args); diff --git a/src/plugins/hllapi/client.h b/src/plugins/hllapi/client.h index 1e5a965..a08611f 100644 --- a/src/plugins/hllapi/client.h +++ b/src/plugins/hllapi/client.h @@ -46,31 +46,6 @@ extern "C" { #endif -/* - void * hllapi_pipe_init(const char *id); - void hllapi_pipe_deinit(void *h); - const char * hllapi_pipe_get_revision(void); - void hllapi_pipe_release_memory(void *p); - int hllapi_pipe_connect(void *h, const char *n, int wait); - void hllapi_pipe_disconnect(void *h); - LIB3270_MESSAGE hllapi_pipe_get_message(void *h); - char * hllapi_pipe_get_text_at(void *h, int row, int col, int len); - char * hllapi_pipe_get_text(void *h, int offset, int len); - int hllapi_pipe_enter(void *h); - int hllapi_pipe_erase_eof(void *h); - int hllapi_pipe_set_text_at(void *h, int row, int col, const unsigned char *str); - int hllapi_pipe_cmp_text_at(void *h, int row, int col, const char *text); - int hllapi_pipe_pfkey(void *h, int key); - int hllapi_pipe_pakey(void *h, int key); - int hllapi_pipe_wait_for_ready(void *h, int seconds); - int hllapi_pipe_sleep(void *h, int seconds); - int hllapi_pipe_is_connected(void *h); - int hllapi_pipe_getcursor(void *h); - int hllapi_pipe_setcursor(void *h, int baddr); - int hllapi_pipe_emulate_input(void *hSession, const char *s, int len, int pasting); - int hllapi_pipe_print(void *h); -*/ - char * hllapi_get_string(int offset, size_t len); void hllapi_free(void *p); -- libgit2 0.21.2