diff --git a/vmkit/lib/JnJVM/Classpath/ClasspathVMSystemProperties.cpp b/vmkit/lib/JnJVM/Classpath/ClasspathVMSystemProperties.cpp
index e66c839..31489ee 100644
--- a/vmkit/lib/JnJVM/Classpath/ClasspathVMSystemProperties.cpp
+++ b/vmkit/lib/JnJVM/Classpath/ClasspathVMSystemProperties.cpp
@@ -61,11 +61,11 @@
   setProperty(vm, prop, "java.vm.specification.version", "1.0");
   setProperty(vm, prop, "java.vm.specification.vendor", "Sun Microsystems, Inc");
   setProperty(vm, prop, "java.vm.specification.name", "Java Virtual Machine Specification");
-  setProperty(vm, prop, "java.specification.version", "1.4");
+  setProperty(vm, prop, "java.specification.version", "1.5");
   setProperty(vm, prop, "java.specification.vendor", "Sun Microsystems, Inc");
   setProperty(vm, prop, "java.specification.name", "Java Platform API Specification");
-  setProperty(vm, prop, "java.version", "1.4");
-  setProperty(vm, prop, "java.runtime.version", "1.4");
+  setProperty(vm, prop, "java.version", "1.5");
+  setProperty(vm, prop, "java.runtime.version", "1.5");
   setProperty(vm, prop, "java.vendor", "VVM Project");
   setProperty(vm, prop, "java.vendor.url", "http://vvm.lip6.fr");
   
@@ -73,14 +73,14 @@
   if (!tmp) tmp = "";
   setProperty(vm, prop, "java.home", tmp);
 			
-  setProperty(vm, prop, "java.class.version", "48.0");
+  setProperty(vm, prop, "java.class.version", "49.0");
   setProperty(vm, prop, "java.class.path", vm->classpath);
   setProperty(vm, prop, "java.boot.class.path", vm->bootClasspathEnv);
   setProperty(vm, prop, "sun.boot.class.path", vm->bootClasspathEnv);
   setProperty(vm, prop, "java.vm.version", "2.0");
   setProperty(vm, prop, "java.vm.vendor", "VVM Project");
   setProperty(vm, prop, "java.vm.name", "JnJVM");
-  setProperty(vm, prop, "java.specification.version", "1.4");
+  setProperty(vm, prop, "java.specification.version", "1.5");
   setProperty(vm, prop, "java.library.path", vm->libClasspathEnv);
   setProperty(vm, prop, "java.io.tmpdir", "/tmp");
   
@@ -114,6 +114,7 @@
   //setProperty(vm, prop, "gnu.classpath.nio.charset.provider.iconv", "true")
   
   setProperty(vm, prop, "file.encoding", "ISO8859_1");
+  setProperty(vm, prop, "gnu.java.util.zoneinfo.dir", "/usr/share/zoneinfo");
 
 
 }
diff --git a/vmkit/lib/JnJVM/README b/vmkit/lib/JnJVM/README
index df98d05..fca880e 100644
--- a/vmkit/lib/JnJVM/README
+++ b/vmkit/lib/JnJVM/README
@@ -1,11 +1,11 @@
 1 - GNU Classpath
-Current version 0.93. Use gcj > 4 or ecj
+Current version 0.97.1. Use ecj to compile Classpath.
 
   a - unzip classpath
-      tar -xzf classpath-0.93
+      tar -xzf classpath-0.97.1
   b - compile classpath
-      cd classpath-0.93
-      ./configure && make
+      cd classpath-0.97.1
+      ./configure --disable-plugin --disable-examples && make
 
 IMPORTANT: for local use
 cd classpath-x.y/lib;
diff --git a/vmkit/lib/JnJVM/VMCore/Jni.cpp b/vmkit/lib/JnJVM/VMCore/Jni.cpp
index e9d93ec..045ba68 100644
--- a/vmkit/lib/JnJVM/VMCore/Jni.cpp
+++ b/vmkit/lib/JnJVM/VMCore/Jni.cpp
@@ -25,8 +25,8 @@
 
 using namespace jnjvm;
 
-extern "C" const struct JNIInvokeInterface JNI_JavaVMTable;
-extern "C" struct JNINativeInterface JNI_JNIEnvTable;
+extern "C" const struct JNIInvokeInterface_ JNI_JavaVMTable;
+extern "C" struct JNINativeInterface_ JNI_JNIEnvTable;
 
 #define BEGIN_EXCEPTION \
   JavaObject* excp = 0; \
@@ -249,7 +249,7 @@
 
 
 jobject NewObjectA(JNIEnv* env, jclass clazz, jmethodID methodID,
-                   jvalue *args) {
+                   const jvalue *args) {
   assert(0 && "implement me");
   return 0;
 }
@@ -339,7 +339,7 @@
 
 
 jobject CallObjectMethodA(JNIEnv *env, jobject obj, jmethodID methodID,
-                          jvalue * args) {
+                          const jvalue * args) {
   assert(0 && "implement me");
   return 0;
 }
@@ -371,7 +371,7 @@
 
 
 jboolean CallBooleanMethodA(JNIEnv *env, jobject obj, jmethodID methodID,
-                            jvalue * args) {
+                            const jvalue * args) {
   assert(0 && "implement me");
   return 0;
 }
@@ -390,7 +390,7 @@
 
 
 jbyte CallByteMethodA(JNIEnv *env, jobject obj, jmethodID methodID,
-                      jvalue *args) {
+                      const jvalue *args) {
   assert(0 && "implement me");
   return 0;
 }
@@ -410,7 +410,7 @@
 
 
 jchar CallCharMethodA(JNIEnv *env, jobject obj, jmethodID methodID,
-                      jvalue *args) {
+                      const jvalue *args) {
   assert(0 && "implement me");
   return 0;
 }
@@ -430,7 +430,7 @@
 
 
 jshort CallShortMethodA(JNIEnv *env, jobject obj, jmethodID methodID,
-                        jvalue *args) {
+                        const jvalue *args) {
   assert(0 && "implement me");
   return 0;
 }
@@ -463,7 +463,7 @@
 
 
 jint CallIntMethodA(JNIEnv *env, jobject obj, jmethodID methodID,
-                    jvalue *args) {
+                    const jvalue *args) {
   assert(0 && "implement me");
   return 0;
 }
@@ -484,7 +484,7 @@
 
 
 jlong CallLongMethodA(JNIEnv *env, jobject obj, jmethodID methodID,
-                      jvalue *args) {
+                      const jvalue *args) {
   assert(0 && "implement me");
   return 0;
 }
@@ -517,7 +517,7 @@
 
 
 jfloat CallFloatMethodA(JNIEnv *env, jobject _obj, jmethodID methodID,
-                        jvalue *args) {
+                        const jvalue *args) {
   assert(0 && "implement me");
   return 0;
 }
@@ -559,7 +559,7 @@
 
 
 jdouble CallDoubleMethodA(JNIEnv *env, jobject _obj, jmethodID methodID,
-                          jvalue *args) {
+                          const jvalue *args) {
   assert(0 && "implement me");
   return 0;
 }
@@ -597,7 +597,7 @@
 
 
 void CallVoidMethodA(JNIEnv *env, jobject obj, jmethodID methodID,
-                     jvalue *args) {
+                     const jvalue *args) {
   assert(0 && "implement me");
 }
 
@@ -618,7 +618,7 @@
 
 
 jobject CallNonvirtualObjectMethodA(JNIEnv *env, jobject obj, jclass clazz,
-                                    jmethodID methodID, jvalue *args) {
+                                    jmethodID methodID, const jvalue *args) {
   assert(0 && "implement me");
   return 0;
 }
@@ -640,7 +640,7 @@
 
 
 jboolean CallNonvirtualBooleanMethodA(JNIEnv *env, jobject obj, jclass clazz,
-                                      jmethodID methodID, jvalue *args) {
+                                      jmethodID methodID, const jvalue *args) {
   assert(0 && "implement me");
   return 0;
 }
@@ -661,7 +661,7 @@
 
 
 jbyte CallNonvirtualByteMethodA(JNIEnv *env, jobject obj, jclass clazz,
-                                jmethodID methodID, jvalue *args) {
+                                jmethodID methodID, const jvalue *args) {
   assert(0 && "implement me");
   return 0;
 }
@@ -683,7 +683,7 @@
 
 
 jchar CallNonvirtualCharMethodA(JNIEnv *env, jobject obj, jclass clazz,
-                                jmethodID methodID, jvalue *args) {
+                                jmethodID methodID, const jvalue *args) {
   assert(0 && "implement me");
   return 0;
 }
@@ -705,7 +705,7 @@
 
 
 jshort CallNonvirtualShortMethodA(JNIEnv *env, jobject obj, jclass clazz,
-                                  jmethodID methodID, jvalue *args) {
+                                  jmethodID methodID, const jvalue *args) {
   assert(0 && "implement me");
   return 0;
 }
@@ -727,7 +727,7 @@
 
 
 jint CallNonvirtualIntMethodA(JNIEnv *env, jobject obj, jclass clazz,
-                              jmethodID methodID, jvalue *args) {
+                              jmethodID methodID, const jvalue *args) {
   assert(0 && "implement me");
   return 0;
 }
@@ -749,7 +749,7 @@
 
 
 jlong CallNonvirtualLongMethodA(JNIEnv *env, jobject obj, jclass clazz,
-                                jmethodID methodID, jvalue *args) {
+                                jmethodID methodID, const jvalue *args) {
   assert(0 && "implement me");
   return 0;
 }
@@ -771,7 +771,7 @@
 
 
 jfloat CallNonvirtualFloatMethodA(JNIEnv *env, jobject obj, jclass clazz,
-                                  jmethodID methodID, jvalue *args) {
+                                  jmethodID methodID, const jvalue *args) {
   assert(0 && "implement me");
   return 0;
 }
@@ -793,7 +793,7 @@
 
 
 jdouble CallNonvirtualDoubleMethodA(JNIEnv *env, jobject obj, jclass clazz,
-                                    jmethodID methodID, jvalue *args) {
+                                    jmethodID methodID, const jvalue *args) {
   assert(0 && "implement me");
   return 0;
 }
@@ -824,7 +824,7 @@
 
 
 void CallNonvirtualVoidMethodA(JNIEnv *env, jobject obj, jclass clazz,
-                               jmethodID methodID, jvalue * args) {
+                               jmethodID methodID, const jvalue * args) {
   assert(0 && "implement me");
 }
 
@@ -1106,7 +1106,7 @@
 
 
 jobject CallStaticObjectMethodA(JNIEnv *env, jclass clazz, jmethodID methodID,
-                                jvalue *args) {
+                                const jvalue *args) {
   assert(0 && "implement me");
   return 0;
 }
@@ -1138,7 +1138,7 @@
 
 
 jboolean CallStaticBooleanMethodA(JNIEnv *env, jclass clazz, jmethodID methodID,
-                                  jvalue *args) {
+                                  const jvalue *args) {
   assert(0 && "implement me");
   return 0;
 }
@@ -1158,7 +1158,7 @@
 
 
 jbyte CallStaticByteMethodA(JNIEnv *env, jclass clazz, jmethodID methodID,
-                            jvalue *args) {
+                            const jvalue *args) {
   assert(0 && "implement me");
   return 0;
 }
@@ -1178,7 +1178,7 @@
 
 
 jchar CallStaticCharMethodA(JNIEnv *env, jclass clazz, jmethodID methodID,
-                            jvalue *args) {
+                            const jvalue *args) {
   assert(0 && "implement me");
   return 0;
 }
@@ -1199,7 +1199,7 @@
 
 
 jshort CallStaticShortMethodA(JNIEnv *env, jclass clazz, jmethodID methodID,
-                              jvalue *args) {
+                              const jvalue *args) {
   assert(0 && "implement me");
   return 0;
 }
@@ -1219,7 +1219,7 @@
 
 
 jint CallStaticIntMethodA(JNIEnv *env, jclass clazz, jmethodID methodID,
-                          jvalue *args) {
+                          const jvalue *args) {
   assert(0 && "implement me");
   return 0;
 }
@@ -1239,7 +1239,7 @@
 
 
 jlong CallStaticLongMethodA(JNIEnv *env, jclass clazz, jmethodID methodID,
-                            jvalue *args) {
+                            const jvalue *args) {
   assert(0 && "implement me");
   return 0;
 }
@@ -1261,7 +1261,7 @@
 
 
 jfloat CallStaticFloatMethodA(JNIEnv *env, jclass clazz, jmethodID methodID,
-                              jvalue *args) {
+                              const jvalue *args) {
   assert(0 && "implement me");
   return 0;
 }
@@ -1282,7 +1282,7 @@
 
 
 jdouble CallStaticDoubleMethodA(JNIEnv *env, jclass clazz, jmethodID methodID,
-                                jvalue *args) {
+                                const jvalue *args) {
   assert(0 && "implement me");
   return 0;
 }
@@ -1317,7 +1317,7 @@
 
 
 void CallStaticVoidMethodA(JNIEnv *env, jclass clazz, jmethodID methodID,
-                           jvalue * args) {
+                           const jvalue * args) {
   assert(0 && "implement me");
 }
 
@@ -1969,49 +1969,49 @@
 
 
 void SetBooleanArrayRegion(JNIEnv *env, jbooleanArray array, jsize start,
-			   jsize len, jboolean *buf) {
+			   jsize len, const jboolean *buf) {
   assert(0 && "implement me");
 }
 
 
 void SetByteArrayRegion(JNIEnv *env, jbyteArray array, jsize start, jsize len,
-			jbyte *buf) {
+			                  const jbyte *buf) {
   assert(0 && "implement me");
 }
 
 
 void SetCharArrayRegion(JNIEnv *env, jcharArray array, jsize start, jsize len,
-			jchar *buf) {
+			                  const jchar *buf) {
   assert(0 && "implement me");
 }
 
 
 void SetShortArrayRegion(JNIEnv *env, jshortArray array, jsize start,
-			 jsize len, jshort *buf) {
+			                   jsize len, const jshort *buf) {
   assert(0 && "implement me");
 }
 
 
 void SetIntArrayRegion(JNIEnv *env, jintArray array, jsize start, jsize len,
-		       jint *buf) {
+		                   const jint *buf) {
   assert(0 && "implement me");
 }
 
 
 void SetLongArrayRegion(JNIEnv* env, jlongArray array, jsize start, jsize len,
-			jlong *buf) {
+			                  const jlong *buf) {
   assert(0 && "implement me");
 }
 
 
 void SetFloatArrayRegion(JNIEnv *env, jfloatArray array, jsize start,
-			 jsize len, jfloat *buf) {
+			                   jsize len, const jfloat *buf) {
   assert(0 && "implement me");
 }
 
 
 void SetDoubleArrayRegion(JNIEnv *env, jdoubleArray array, jsize start,
-			  jsize len, jdouble *buf) {
+			                    jsize len, const jdouble *buf) {
   assert(0 && "implement me");
 }
 
@@ -2168,6 +2168,12 @@
   return 0;
 }
 
+jobjectRefType GetObjectRefType(JNIEnv* env, jobject obj) {
+  assert(0 && "implement me");
+  return (jobjectRefType)0;
+}
+
+
 
 jint DestroyJavaVM(JavaVM *vm) {
   assert(0 && "implement me");
@@ -2213,7 +2219,7 @@
 }
 
 
-const struct JNIInvokeInterface JNI_JavaVMTable = {
+const struct JNIInvokeInterface_ JNI_JavaVMTable = {
 	NULL,
 	NULL,
 	NULL,
@@ -2226,7 +2232,7 @@
 };
 
 
-struct JNINativeInterface JNI_JNIEnvTable = {
+struct JNINativeInterface_ JNI_JNIEnvTable = {
 	NULL,
 	NULL,
 	NULL,
@@ -2493,5 +2499,8 @@
 
 	&NewDirectByteBuffer,
 	&GetDirectBufferAddress,
-	&GetDirectBufferCapacity
+	&GetDirectBufferCapacity,
+
+  /* ---- JNI 1.6 functions ---- */
+  &GetObjectRefType
 };
