Beispiel #1
0
        private void InitializeCore(JavaVMConfiguration configuration, IJavaVMCallbackHandler hookHandler)
        {
            try
            {
                Log("32/64-bit: " + (IntPtr.Size * 8));

                AppDomain.CurrentDomain.ProcessExit += new EventHandler(CurrentDomain_ProcessExit);
                AppDomain.CurrentDomain.DomainUnload += new EventHandler(CurrentDomain_DomainUnload);

                mIJavaVMHookHandler = hookHandler;

                mJvmConfiguration = InitializeConfiguration(configuration);
                PlatformFactory.Create(mJvmConfiguration);
                mJvmConfiguration.CanonicalizePaths(PlatformFactory.Platform);

                mLoader = new JavaVMLoader(this.JvmConfiguration);

                InitializeHooks();

                IntPtr loadedVM = mLoader.GetFirstCreatedVM();
                IntPtr environmentHandle = IntPtr.Zero;
                if (loadedVM != IntPtr.Zero)
                {
                    if (!AllowReuseOfExistingVM)
                    {
                        throw new JniException("VM already exists.");
                    }
                    if (IsLoggingEnabled)
                    {
                        Log("Using existing VM.");
                    }
                    mJavaVM = loadedVM;
                }
                else
                {
                    mJavaVM = mLoader.Load(out environmentHandle);
                }
                mInvokeInterface = new JniInvokeInterface(this.mJavaVM, this.JvmConfiguration.Version);

                if (loadedVM != IntPtr.Zero)
                {
                    environmentHandle = JniEnvironmentCache.GetEnvironmentHandle();
                }

                mJniEnvironmentCache = new JniEnvironmentCache(environmentHandle);
                JniEnvironment environment = FindEnvironment();

                mNativeMethodRegistrar = new JavaNativeMethodRegistrar(mJvmConfiguration, environment);
                JavaStdStreamRedirector.Init(environment);

                if (IsLoggingEnabled)
                {
                    JavaSystemPropertiesHelper.LogBannerProperties(environment);
                }
            }
            catch (Exception ex)
            {
                throw new JniException(JniResourceManager.Instance.GetString("jvmCoreFailedToCreate"), ex);
            }
        }
Beispiel #2
0
 public static void Initialize(IJavaVMCallbackHandler hookHandler)
 {
     StaticInitializeCore(null, hookHandler);
 }
Beispiel #3
0
 private static void StaticInitializeCore(JavaVMConfiguration configuration, IJavaVMCallbackHandler hookHandler)
 {
     if (Instance != null)
     {
         throw new JniException(JniResourceManager.Instance.GetString("jvmCoreInitOnlyOnce"));
     }
     mInstance = new JavaVM();
     Instance.InitializeCore(configuration, hookHandler);
 }
Beispiel #4
0
 public static void Initialize(JavaVMConfiguration configuration, IJavaVMCallbackHandler hookHandler)
 {
     StaticInitializeCore(configuration, hookHandler);
 }