public static unsafe void Main(string[] args) { JreRuntime.Initialize("/usr/lib/jvm/java-11-openjdk-amd64/lib/server/libjvm.so"); Console.WriteLine("Hello World!"); bool hosted = false; JniRuntime vm = null; try { vm = JniRuntime.CurrentRuntime; hosted = vm != null; } catch (InvalidOperationException e) { Console.WriteLine(e); } ListInvocationPoints("PRE"); if (vm == null) { vm = new JreRuntimeOptions().CreateJreVM(); } TryExplicitlyCallJni(); ListInvocationPoints("WITHIN"); TryImplicitlyInteroperate(); if (!hosted) { vm.Dispose(); } ListInvocationPoints("POST"); }
public void JDK_OnlySupportsOneVM() { try { var second = new JreRuntimeOptions().CreateJreVM(); // If we reach here, we're in a JVM that supports > 1 VM second.Dispose(); Assert.Ignore(); } catch (NotSupportedException) { } catch (Exception e) { Assert.Fail("Expected NotSupportedException; got: {0}", e); } }
void CreateJavaVM(string jvmDllPath) { var builder = new JreRuntimeOptions { JvmLibraryPath = jvmDllPath, }; try { builder.CreateJreVM(); } catch (Exception e) { ErrorAndExit(Message.ErrorUnableToCreateJavaVM, Environment.NewLine, e); } }
void CreateJavaVM(string jvmDllPath) { var builder = new JreRuntimeOptions { JvmLibraryPath = jvmDllPath, }; try { builder.CreateJreVM(); } catch (Exception e) { Error($"Unable to create Java VM{Environment.NewLine}{e}"); Environment.Exit(3); } }
public static void Main(string[] args) { string?jvmPath = global::Java.InteropTests.TestJVM.GetJvmLibraryPath(); bool createMultipleVMs = false; bool showHelp = false; var options = new OptionSet() { "Using the JVM from C#!", "", "Options:", { "jvm=", $"{{PATH}} to JVM to use. Default is:\n {jvmPath}", v => jvmPath = v }, { "m", "Create multiple Java VMs. This will likely creash.", v => createMultipleVMs = v != null }, { "h|help", "Show this message and exit.", v => showHelp = v != null }, }; options.Parse(args); if (showHelp) { options.WriteOptionDescriptions(Console.Out); return; } Console.WriteLine("Hello World!"); var builder = new JreRuntimeOptions() { JniAddNativeMethodRegistrationAttributePresent = true, JvmLibraryPath = jvmPath, }; builder.AddOption("-Xcheck:jni"); var jvm = builder.CreateJreVM(); Console.WriteLine($"JniRuntime.CurrentRuntime == jvm? {ReferenceEquals (JniRuntime.CurrentRuntime, jvm)}"); foreach (var h in JniRuntime.GetAvailableInvocationPointers()) { Console.WriteLine("PRE: GetCreatedJavaVMHandles: {0}", h); } CreateJLO(); if (createMultipleVMs) { CreateAnotherJVM(); } }
public static unsafe void Main(string[] args) { Console.WriteLine("Hello World!"); try { var ignore = JniRuntime.CurrentRuntime; } catch (InvalidOperationException e) { Console.WriteLine(e); } foreach (var h in JniRuntime.GetAvailableInvocationPointers()) { Console.WriteLine("PRE: GetCreatedJavaVMHandles: {0}", h); } Console.WriteLine("Part 2!"); using (var vm = new JreRuntimeOptions().CreateJreVM()) { Console.WriteLine("# JniEnvironment.EnvironmentPointer={0}", JniEnvironment.EnvironmentPointer); Console.WriteLine("vm.SafeHandle={0}", vm.InvocationPointer); var t = new JniType("java/lang/Object"); var c = t.GetConstructor("()V"); var o = t.NewObject(c, null); var m = t.GetInstanceMethod("hashCode", "()I"); int i = JniEnvironment.InstanceMethods.CallIntMethod(o, m); Console.WriteLine("java.lang.Object={0}", o); Console.WriteLine("hashcode={0}", i); JniObjectReference.Dispose(ref o); t.Dispose(); // var o = JniTypes.FindClass ("java/lang/Object"); /* * var waitForCreation = new CountdownEvent (1); * var exitThread = new CountdownEvent (1); * var t = new Thread (() => { * var vm2 = new JavaVMBuilder ().CreateJavaVM (); * waitForCreation.Signal (); * exitThread.Wait (); * }); * t.Start (); * waitForCreation.Wait (); */ foreach (var h in JniRuntime.GetAvailableInvocationPointers()) { Console.WriteLine("WITHIN: GetCreatedJavaVMs: {0}", h); } // exitThread.Signal (); } foreach (var h in JniRuntime.GetAvailableInvocationPointers()) { Console.WriteLine("POST: GetCreatedJavaVMs: {0}", h); } }
static JreRuntimeOptions CreateBuilder(string[] jars) { var dir = Path.GetDirectoryName (typeof (TestJVM).Assembly.Location); var builder = new JreRuntimeOptions () { JvmLibraryPath = Environment.GetEnvironmentVariable ("JI_JVM_PATH"), }; if (jars != null) { foreach (var jar in jars) builder.ClassPath.Add (Path.Combine (dir, jar)); } builder.AddOption ("-Xcheck:jni"); builder.TypeManager = new JreTypeManager (); return builder; }
public static void Main() { var runtimeOptions = new JreRuntimeOptions() { JvmLibraryPath = Environment.GetEnvironmentVariable("JI_JVM_PATH"), }; var GlobalRuntime = runtimeOptions.CreateJreVM(); IntPtr _env = global::Java.Interop.JniEnvironment.EnvironmentPointer; SafeTiming(_env); XAIntPtrTiming(_env); JIIntPtrTiming(_env); JIPinvokeTiming(_env); GlobalRuntime.Dispose(); }
static JreRuntimeOptions CreateBuilder(string[] jars) { var builder = new JreRuntimeOptions(); if (jars != null) { foreach (var jar in jars) { builder.ClassPath.Add(jar); } } builder.AddOption("-Xcheck:jni"); builder.TypeManager = new JreTypeManager(); return(builder); }
static JreRuntimeOptions CreateBuilder(string[] jars, Assembly caller) { var dir = Path.GetDirectoryName(typeof(TestJVM).Assembly.Location); var builder = new JreRuntimeOptions() { JvmLibraryPath = GetJvmLibraryPath(), JniAddNativeMethodRegistrationAttributePresent = true, JniGlobalReferenceLogWriter = GetLogOutput("JAVA_INTEROP_GREF_LOG", "g-", caller), JniLocalReferenceLogWriter = GetLogOutput("JAVA_INTEROP_LREF_LOG", "l-", caller), }; if (jars != null) { foreach (var jar in jars) { builder.ClassPath.Add(Path.Combine(dir, jar)); } } builder.AddOption("-Xcheck:jni"); builder.TypeManager = new JreTypeManager(); return(builder); }
static JniRuntime CreateJavaVM() { var builder = new JreRuntimeOptions(); return(builder.CreateJreVM()); }