Commit 68e481788976ae619e65962d34428424f75a48da
1 parent
fad6aa49
Exists in
master
and in
5 other branches
Módulo java volta a funcionar em linux
Showing
2 changed files
with
31 additions
and
81 deletions
Show diff stats
src/java/call.cc
| @@ -50,62 +50,6 @@ namespace PW3270_NAMESPACE { | @@ -50,62 +50,6 @@ namespace PW3270_NAMESPACE { | ||
| 50 | if(jvm || load_jvm(widget)) { | 50 | if(jvm || load_jvm(widget)) { |
| 51 | 51 | ||
| 52 | v3270_set_script(widget,'J',TRUE); | 52 | v3270_set_script(widget,'J',TRUE); |
| 53 | -/* | ||
| 54 | - | ||
| 55 | - gchar * dirname = g_path_get_dirname(filename); | ||
| 56 | - gchar * classname = g_path_get_basename(filename); | ||
| 57 | - | ||
| 58 | - gchar * ptr = strrchr(classname,'.'); | ||
| 59 | - if(ptr) { | ||
| 60 | - *ptr = 0; | ||
| 61 | - } | ||
| 62 | - | ||
| 63 | - gchar * classpath; | ||
| 64 | - | ||
| 65 | -#ifdef _WIN32 | ||
| 66 | - | ||
| 67 | - char buffer[1024]; | ||
| 68 | - gchar * exports; | ||
| 69 | - | ||
| 70 | - if(GetModuleFileName(NULL,buffer,sizeof(buffer)) < sizeof(buffer)) { | ||
| 71 | - | ||
| 72 | - gchar * ptr = strrchr(buffer,G_DIR_SEPARATOR); | ||
| 73 | - if(ptr) { | ||
| 74 | - *ptr = 0; | ||
| 75 | - exports = g_build_filename(buffer,"jvm-exports",NULL); | ||
| 76 | - } else { | ||
| 77 | - exports = g_build_filename(".","jvm-exports",NULL); | ||
| 78 | - } | ||
| 79 | - | ||
| 80 | - | ||
| 81 | - } else { | ||
| 82 | - | ||
| 83 | - exports = g_build_filename(".","jvm-exports",NULL); | ||
| 84 | - | ||
| 85 | - } | ||
| 86 | - | ||
| 87 | - debug("myDir=%s",myDir); | ||
| 88 | - | ||
| 89 | - g_mkdir_with_parents(exports,0777); | ||
| 90 | - | ||
| 91 | -#ifdef DEBUG | ||
| 92 | - classpath = g_strdup_printf("%s;%s;.bin/java",dirname,exports); | ||
| 93 | -#else | ||
| 94 | - classpath = g_strdup_printf("%s;%s",dirname,exports); | ||
| 95 | -#endif | ||
| 96 | - | ||
| 97 | - g_free(exports); | ||
| 98 | -#else | ||
| 99 | - | ||
| 100 | -#ifdef DEBUG | ||
| 101 | - classpath = g_strdup_printf("%s:%s:.bin/java",dirname,JARDIR); | ||
| 102 | -#else | ||
| 103 | - classpath = g_strdup_printf("%s:%s",dirname,JARDIR); | ||
| 104 | -#endif | ||
| 105 | - | ||
| 106 | -#endif // _WIN32 | ||
| 107 | - | ||
| 108 | -*/ | ||
| 109 | 53 | ||
| 110 | try { | 54 | try { |
| 111 | 55 | ||
| @@ -158,7 +102,38 @@ namespace PW3270_NAMESPACE { | @@ -158,7 +102,38 @@ namespace PW3270_NAMESPACE { | ||
| 158 | env->CallStaticVoidMethod(cls, mid, args); | 102 | env->CallStaticVoidMethod(cls, mid, args); |
| 159 | 103 | ||
| 160 | // Check for exception | 104 | // Check for exception |
| 105 | + jthrowable exc = env->ExceptionOccurred(); | ||
| 106 | + env->ExceptionClear(); | ||
| 107 | + | ||
| 108 | + if (exc) { | ||
| 109 | + jclass throwable_class = env->FindClass("java/lang/Throwable"); | ||
| 110 | + | ||
| 111 | + jmethodID jni_getMessage = env->GetMethodID(throwable_class,"getMessage","()Ljava/lang/String;"); | ||
| 112 | + jstring j_msg = (jstring) env->CallObjectMethod(exc,jni_getMessage); | ||
| 113 | + | ||
| 114 | + GtkWidget *dialog = gtk_message_dialog_new( GTK_WINDOW(gtk_widget_get_toplevel(widget)), | ||
| 115 | + GTK_DIALOG_DESTROY_WITH_PARENT, | ||
| 116 | + GTK_MESSAGE_ERROR, | ||
| 117 | + GTK_BUTTONS_OK_CANCEL, | ||
| 118 | + _( "Java application \"%s\" has failed." ), classname ); | ||
| 161 | 119 | ||
| 120 | + gtk_window_set_title(GTK_WINDOW(dialog), _( "Java error" )); | ||
| 121 | + | ||
| 122 | + if(!env->IsSameObject(j_msg,NULL)) { | ||
| 123 | + | ||
| 124 | + const char * msg = env->GetStringUTFChars(j_msg, 0); | ||
| 125 | + | ||
| 126 | + gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(dialog),"%s",msg); | ||
| 127 | + | ||
| 128 | + env->ReleaseStringUTFChars( j_msg, msg); | ||
| 129 | + } | ||
| 130 | + | ||
| 131 | + if(gtk_dialog_run(GTK_DIALOG (dialog)) == GTK_RESPONSE_CANCEL) | ||
| 132 | + gtk_main_quit(); | ||
| 133 | + gtk_widget_destroy(dialog); | ||
| 134 | + | ||
| 135 | + | ||
| 136 | + } | ||
| 162 | 137 | ||
| 163 | // And finish | 138 | // And finish |
| 164 | env->DeleteLocalRef(args); | 139 | env->DeleteLocalRef(args); |
src/plugins/hllapi/client.h
| @@ -46,31 +46,6 @@ | @@ -46,31 +46,6 @@ | ||
| 46 | extern "C" { | 46 | extern "C" { |
| 47 | #endif | 47 | #endif |
| 48 | 48 | ||
| 49 | -/* | ||
| 50 | - void * hllapi_pipe_init(const char *id); | ||
| 51 | - void hllapi_pipe_deinit(void *h); | ||
| 52 | - const char * hllapi_pipe_get_revision(void); | ||
| 53 | - void hllapi_pipe_release_memory(void *p); | ||
| 54 | - int hllapi_pipe_connect(void *h, const char *n, int wait); | ||
| 55 | - void hllapi_pipe_disconnect(void *h); | ||
| 56 | - LIB3270_MESSAGE hllapi_pipe_get_message(void *h); | ||
| 57 | - char * hllapi_pipe_get_text_at(void *h, int row, int col, int len); | ||
| 58 | - char * hllapi_pipe_get_text(void *h, int offset, int len); | ||
| 59 | - int hllapi_pipe_enter(void *h); | ||
| 60 | - int hllapi_pipe_erase_eof(void *h); | ||
| 61 | - int hllapi_pipe_set_text_at(void *h, int row, int col, const unsigned char *str); | ||
| 62 | - int hllapi_pipe_cmp_text_at(void *h, int row, int col, const char *text); | ||
| 63 | - int hllapi_pipe_pfkey(void *h, int key); | ||
| 64 | - int hllapi_pipe_pakey(void *h, int key); | ||
| 65 | - int hllapi_pipe_wait_for_ready(void *h, int seconds); | ||
| 66 | - int hllapi_pipe_sleep(void *h, int seconds); | ||
| 67 | - int hllapi_pipe_is_connected(void *h); | ||
| 68 | - int hllapi_pipe_getcursor(void *h); | ||
| 69 | - int hllapi_pipe_setcursor(void *h, int baddr); | ||
| 70 | - int hllapi_pipe_emulate_input(void *hSession, const char *s, int len, int pasting); | ||
| 71 | - int hllapi_pipe_print(void *h); | ||
| 72 | -*/ | ||
| 73 | - | ||
| 74 | char * hllapi_get_string(int offset, size_t len); | 49 | char * hllapi_get_string(int offset, size_t len); |
| 75 | void hllapi_free(void *p); | 50 | void hllapi_free(void *p); |
| 76 | 51 |