diff --git a/src/modules/Java/configure.in b/src/modules/Java/configure.in
index a8dcb7025722bc241a650b210ea912453b163a28..b712ee705814c0dd74397b9efd5edcc104009a84 100644
--- a/src/modules/Java/configure.in
+++ b/src/modules/Java/configure.in
@@ -146,7 +146,7 @@ if test "x$with_java" = xyes; then
     CPPFLAGS="-I$pike_cv_java_include_dir -I$pike_cv_java_include_dir/$pike_cv_java_sysos ${CPPFLAGS}"
   fi
 
-  AC_CHECK_HEADERS(jni.h winbase.h)
+  AC_CHECK_HEADERS(jni.h winbase.h setjmp.h)
 
   pike_cv_java=no
 
@@ -207,6 +207,9 @@ if test "x$with_java" = xyes; then
       AC_TRY_RUN([#ifdef HAVE_JNI_H
 #include <jni.h>
 #endif
+#ifdef HAVE_SETJMP_H
+#include <setjmp.h>
+#endif
 #include <stdio.h>
 #ifdef __NT__
 #include <windows.h>
@@ -222,6 +225,7 @@ static HINSTANCE jvmdll = NULL;
           JavaVMInitArgs vm_args;
           JavaVMOption vm_options[2];
 	  jint res;
+	  jmp_buf jbuf;
 #ifdef __NT__
 	  {
 	    char *libname="jvm";
@@ -279,6 +283,8 @@ static HINSTANCE jvmdll = NULL;
 	    fprintf(stderr, "JNI_CreateJavaVM failed code %d\\n", (int)res);
             exit(1);
 	  }
+	  if(!setjmp(jbuf))
+	    longjmp(jbuf,1);
 	  return 0;
         };
       ], [pike_cv_java_working=yes], [pike_cv_java_working=no])