diff --git a/pw3270.cbp b/pw3270.cbp
index dcf9f63..84c41ad 100644
--- a/pw3270.cbp
+++ b/pw3270.cbp
@@ -150,6 +150,10 @@
+
+
+
+
diff --git a/src/classlib/session.cc b/src/classlib/session.cc
index c7a03ff..542483e 100644
--- a/src/classlib/session.cc
+++ b/src/classlib/session.cc
@@ -121,6 +121,7 @@
void session::set_plugin(session * (*factory)(const char *name))
{
+ trace("%s(%p)",__FUNCTION__,factory);
session::factory = factory;
}
diff --git a/src/java/Makefile.in b/src/java/Makefile.in
index d8821c5..ada17f6 100644
--- a/src/java/Makefile.in
+++ b/src/java/Makefile.in
@@ -120,6 +120,16 @@ $(BINDIR)/java/%.class: sample/%.java $(BINDIR)/java/$(PACKAGE_NAME)/terminal.cl
@mkdir -p `dirname $@`
$(JAVAC) -encoding utf-8 -cp $(BINDIR)/java -d $(BINDIR)/java $<
+$(BINDIR)/%.class: sample/%.java $(BINDIR)/java/$(PACKAGE_NAME)/terminal.class
+ @echo $< ...
+ @mkdir -p `dirname $@`
+ $(JAVAC) -encoding utf-8 -cp $(BINDIR)/java -d $(BINDIR)/java $<
+
+%.class: sample/%.java $(BINDIR)/java/$(PACKAGE_NAME)/terminal.class
+ @echo $< ...
+ @mkdir -p `dirname $@`
+ $(JAVAC) -encoding utf-8 -cp $(BINDIR)/java -d `dirname $@` $<
+
$(BINDIR)/java/$(PACKAGE_NAME)/%.class: %.java
@echo $< ...
@mkdir -p `dirname $@`
@@ -144,6 +154,8 @@ zip: jni3270.zip
jni3270.zip: $(BINRLS)@DLLDIR@/@DLLPREFIX@jni3270@DLLEXT@ $(BINRLS)/$(PACKAGE_NAME).jar testprogram.java doc
@rm -fr .tmp.zip
@rm -f $@
+ @mkdir -p .tmp.zip
+ @mkdir -p .tmp.zip/
@zip -9 -j $@ $(BINRLS)@DLLDIR@/@DLLPREFIX@jni3270@DLLEXT@ $(BINRLS)/$(PACKAGE_NAME).jar testprogram.java
@zip -9 -r $@ doc
diff --git a/src/java/main.cc b/src/java/main.cc
index 341990a..3f72921 100644
--- a/src/java/main.cc
+++ b/src/java/main.cc
@@ -33,6 +33,7 @@
/*---[ Implement ]----------------------------------------------------------------------------------*/
void set_java_session_factory(PW3270_NAMESPACE::session * (*factory)(const char *name)) {
+ trace("%s(%p)",__FUNCTION__,factory);
session::set_plugin(factory);
}
@@ -49,6 +50,8 @@ session * getHandle(JNIEnv *env, jobject obj) {
JNIEXPORT jint JNICALL Java_pw3270_terminal_init__(JNIEnv *env, jobject obj) {
+ trace("%s",__FUNCTION__);
+
try {
jlong handle = reinterpret_cast(session::create());
@@ -56,6 +59,7 @@ JNIEXPORT jint JNICALL Java_pw3270_terminal_init__(JNIEnv *env, jobject obj) {
} catch(std::exception &e) {
+ trace("%s: %s",__FUNCTION__,e.what());
env->ThrowNew(env->FindClass("java/lang/Exception"), e.what());
}
diff --git a/src/java/plugin.cc b/src/java/plugin.cc
index befe36b..a520932 100644
--- a/src/java/plugin.cc
+++ b/src/java/plugin.cc
@@ -306,10 +306,22 @@
/*---[ Implement ]----------------------------------------------------------------------------------*/
- static session * factory(const char *name)
- {
- return new plugin(lib3270_get_default_session_handle());
- }
+extern "C" {
+
+ static session * factory(const char *name)
+ {
+ debug("---> %s",__FUNCTION__);
+ return new plugin(lib3270_get_default_session_handle());
+ }
+
+ static jint JNICALL jni_vfprintf(FILE *fp, const char *format, va_list args)
+ {
+ lib3270_write_va_log(lib3270_get_default_session_handle(),"java",format,args);
+ return 0;
+ }
+
+}
+
LIB3270_EXPORT int pw3270_plugin_start(GtkWidget *window)
{
@@ -367,20 +379,32 @@
memset(&vm_args,0,sizeof(vm_args));
memset(options,0,sizeof(options));
- vm_args.version = JNI_VERSION_1_2;
- vm_args.nOptions = 0;
- vm_args.options = options;
+ vm_args.version = JNI_VERSION_1_4;
+ vm_args.nOptions = 0;
+ vm_args.options = options;
+ vm_args.ignoreUnrecognized = JNI_FALSE;
+
+ options[vm_args.nOptions].optionString = g_strdup("vfprintf");
+ options[vm_args.nOptions].extraInfo = (void *) jni_vfprintf;
+ vm_args.nOptions++;
-#ifdef DEBUG
- options[vm_args.nOptions++].optionString = g_strdup("-verbose");
-#endif
+//#ifdef DEBUG
+// options[vm_args.nOptions++].optionString = g_strdup("-verbose");
+//#endif
gchar * dirname = g_path_get_dirname(filename);
#if defined( WIN32 )
+ g_mkdir_with_parents("./jvm-exports",0777);
+
options[vm_args.nOptions++].optionString = g_strdup_printf("-Djava.library.path=%s",".");
- options[vm_args.nOptions++].optionString = g_strdup_printf("-Djava.class.path=.;%s",dirname);
+ options[vm_args.nOptions++].optionString = g_strdup_printf("-Djava.class.path=./jvm-exports;%s",dirname);
+
+#elif defined(DEBUG)
+
+ options[vm_args.nOptions++].optionString = g_strdup_printf("-Djava.library.path=%s:.bin/Debug:.bin/Debug/lib",JNIDIR);
+ options[vm_args.nOptions++].optionString = g_strdup_printf("-Djava.class.path=%s:%s:./src/java/.bin/java",JARDIR,dirname);
#else
@@ -458,7 +482,15 @@
jobjectArray args = env->NewObjectArray(0, env->FindClass("java/lang/String"), env->NewStringUTF(""));
- env->CallStaticVoidMethod(cls, mid, args);
+ try {
+
+ env->CallStaticVoidMethod(cls, mid, args);
+
+ } catch(std::exception &e) {
+
+ trace("%s",e.what());
+ }
+
}
diff --git a/src/java/run.sh b/src/java/run.sh
index d0c1b46..2c1e584 100755
--- a/src/java/run.sh
+++ b/src/java/run.sh
@@ -3,5 +3,5 @@ make -C ../.. Debug
make Debug
make .bin/java/${1}.class
-LD_LIBRARY_PATH=../../.bin/Debug/lib/ java -Djava.library.path=.bin/Debug -cp .bin/java/ ${1}
+LD_LIBRARY_PATH=../../.bin/Debug/lib/ java -Djava.library.path=/usr/local/lib64/java:.bin/Debug/lib -cp .bin/java/ ${1}
diff --git a/src/java/sample/popup.java b/src/java/sample/popup.java
new file mode 100755
index 0000000..1db45fb
--- /dev/null
+++ b/src/java/sample/popup.java
@@ -0,0 +1,23 @@
+
+import pw3270.*;
+
+public class popup
+{
+ public static void main (String[] args)
+ {
+ System.out.println("Begin");
+
+ try {
+
+ terminal host = new terminal();
+ System.out.println("Output: " + host.popup_dialog(0,"Title","This is a popup message", "And this is a secondary and more detailed text"));
+
+ } catch( Exception e ) {
+
+ System.out.println("Error: " + e);
+
+ }
+
+ System.out.println("End");
+ }
+};
--
libgit2 0.21.2