public JavaClass(JavaENV _env, string _name) { name = _name; env = _env; switch (name) { case "int": name = "java.lang.Integer"; break; case "long": name = "java.lang.Long"; break; case "boolean": name = "java.lang.Boolean"; break; case "float": name = "java.lang.Float"; break; case "double": name = "java.lang.Double"; break; case "char": name = "java.lang.Character"; break; case "short": name = "java.lang.Short"; break; case "byte": name = "java.lang.Byte"; break; case "array": name = "java.lang.Array"; break; case "void": name = "java.lang.Void"; break; } id = env.FindClass(JavaBasicConst.ToJNIClassFullName(name)); name = _name; if (id <= 0) { throw new Exception("class[" + name + "] is not found"); } }
public JavaMethodPrototype(JavaENV _env, JavaClass _cls, string _name, string _returntype, string[] _paramtypes) { env = _env; klass = _cls; name = _name; returntype = _returntype; paramlist = new List<string>(); if (_paramtypes != null) paramlist.AddRange(_paramtypes); }
public Java(JavaConnector jvc) { if (jvc == null) { throw new Exception("JavaConnector is undefined"); } env = jvc.GetJavaENV(); }
private void init_java_vm_intron() { jvm = null; java = null; env = null; hJvmDll = 0; hNecessaryDll = null; jvm_path = JavaBasicConst.JVM_PATH; }
public JavaMethod(JavaENV _env, JavaClass _cls, string _name, string _returntype, string[] _paramtypes) : base(_env, _cls, _name, _returntype, _paramtypes) { id = env.GetMethodID(klass.GetID(), name, GetMethodSig()); if (id <= 0) { throw new Exception("method[" + name + "] is not found"); } }
public JavaField(JavaENV _env, JavaClass _cls, string _name, string _type) : base(_env, _cls, _name, _type) { id = env.GetFieldID(klass.GetID(), name, JavaBasicConst.ToJNISigName(type)); if (id <= 0) { throw new Exception("field[" + name + "] is not found"); } }
public JavaConstructor(JavaENV _env, JavaClass _cls, string[] _paramtypes) : base(_env, _cls, "<init>", "void", _paramtypes) { id = env.GetMethodID(klass.GetID(), name, GetMethodSig()); if (id <= 0) { throw new Exception("method[" + name + "] is not found"); } }
public JavaObject(JavaENV _env, JavaClass _cls, JavaConstructor _constructor, object[] _args) { env = _env; klass = _cls; id = env.NewObject(klass.GetID(), _constructor.GetID(), ToJNIObjects(_args)); if (id <= 0) { throw new Exception("fail to new a object[" + klass.GetClassFullName() + "]"); } }
public bool FinalizeJVM() { if (jvm != null) { jvm.DestroyJavaVM(); } NativeAPI.FreeLibrary(hJvmDll); //UnloadNecessaryDll(); jvm = null; env = null; hJvmDll = 0; hNecessaryDll = null; return(true); }
public JavaObject(JavaENV _env, JavaClass _cls, int _objid) { env = _env; klass = _cls; id = _objid; }
public JavaFieldPrototype(JavaENV _env, JavaClass _cls, string _name, string _type) { env = _env; klass = _cls; name = _name; type = _type; }
public bool InitializeJVM(string[] jvmoptions) { //LoadNecessaryDll(); hJvmDll = NativeAPI.LoadLibrary(jvm_path); if (0 == hJvmDll) { return(false); } m_JNI_CreateJavaVM pCreateJavaVM = (m_JNI_CreateJavaVM)NativeAPI.GetProcDelegateEx(hJvmDll, "JNI_CreateJavaVM", typeof(m_JNI_CreateJavaVM)); if (null == pCreateJavaVM) { return(false); } IntPtr[] optsptr = new IntPtr[jvmoptions.Length]; for (int i = 0; i < jvmoptions.Length; i++) { optsptr[i] = IntPtr.Zero; } int[] optstmp = new int[2 * jvmoptions.Length]; IntPtr options = IntPtr.Zero; int[] jvm_p = { 0 }; int[] env_p = { 0 }; int jvmp = 0, envp = 0; int[] jvmflist = new int[JavaBasicConst.JNI_JVM_INT]; int[] envflist = new int[JavaBasicConst.JNI_ENV_INT]; IntPtr jvm_p_p = IntPtr.Zero, env_p_p = IntPtr.Zero; // init options try { int i; for (i = 0; i < jvmoptions.Length; i++) { optsptr[i] = NativeMemory.NewString(jvmoptions[i]); optstmp[i * 2] = optsptr[i].ToInt32(); optstmp[i * 2 + 1] = 0; } options = NativeMemory.NewSpace(sizeof(int) * optstmp.Length); NativeMemory.CopyInt(options, optstmp); JavaVMInitArgs args = new JavaVMInitArgs(); args.version = JavaBasicConst.JNI_VERSION_1_6; //args.version = JavaBasicConst.JNI_VERSION_1_7; args.nOptions = 3; args.options = options.ToInt32(); args.ignoreUnrecognized = JavaBasicConst.JNI_TRUE; // init jvm,env for (i = 0; i < jvmflist.Length; i++) { jvmflist[i] = 0; } for (i = 0; i < envflist.Length; i++) { envflist[i] = 0; } jvm_p_p = NativeMemory.NewSpace(sizeof(int)); env_p_p = NativeMemory.NewSpace(sizeof(int)); // create a jvm int _res = pCreateJavaVM(jvm_p_p, env_p_p, ref args); if (_res < 0) { throw new Exception("failed to create a jvm"); } NativeMemory.CopyIntBack(jvm_p_p, jvm_p); NativeMemory.CopyIntBack(env_p_p, env_p); jvmp = jvm_p[0]; envp = env_p[0]; NativeMemory.CopyIntBack(new IntPtr(jvmp), jvm_p); NativeMemory.CopyIntBack(new IntPtr(envp), env_p); NativeMemory.CopyIntBack(new IntPtr(jvm_p[0]), jvmflist); NativeMemory.CopyIntBack(new IntPtr(env_p[0]), envflist); // TODO: process jvmflist, envflist jvm = new JavaVM(jvmp, jvmflist); env = new JavaENV(envp, envflist); } catch (Exception e) { Console.WriteLine(e.Message); } // dispose IntPtr NativeMemory.Dispose(options); foreach (IntPtr x in optsptr) { NativeMemory.Dispose(x); } NativeMemory.Dispose(jvm_p_p); NativeMemory.Dispose(env_p_p); return(true); }