Пример #1
0
        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");
            }
        }
Пример #2
0
 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);
 }   
Пример #3
0
 public Java(JavaConnector jvc)
 {
     if (jvc == null)
     {
         throw new Exception("JavaConnector is undefined");
     }
     env = jvc.GetJavaENV();
 }
Пример #4
0
 private void init_java_vm_intron()
 {
     jvm           = null;
     java          = null; env = null;
     hJvmDll       = 0;
     hNecessaryDll = null;
     jvm_path      = JavaBasicConst.JVM_PATH;
 }
Пример #5
0
 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");
     }
 }
Пример #6
0
 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");
     }
 }
Пример #7
0
 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");
     }
 }
Пример #8
0
 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() + "]");
     }
 }
Пример #9
0
        public bool FinalizeJVM()
        {
            if (jvm != null)
            {
                jvm.DestroyJavaVM();
            }
            NativeAPI.FreeLibrary(hJvmDll);

            //UnloadNecessaryDll();

            jvm           = null;
            env           = null;
            hJvmDll       = 0;
            hNecessaryDll = null;
            return(true);
        }
Пример #10
0
 public JavaObject(JavaENV _env, JavaClass _cls, int _objid)
 {
     env   = _env;
     klass = _cls;
     id    = _objid;
 }
Пример #11
0
 public JavaFieldPrototype(JavaENV _env, JavaClass _cls, string _name, string _type)
 {
     env  = _env; klass = _cls;
     name = _name; type = _type;
 }
Пример #12
0
        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);
        }