/// <summary> /// 加载 java 程序集。 /// </summary> /// <param name="jarNames">java程序集的文件名或路径,以;分隔的多个绝对或相对路径的 jar 文件名。</param> public static void LoadFrom(string jarNames) { var lst = GetJarsFullName(jarNames.Split(";".ToCharArray(), StringSplitOptions.RemoveEmptyEntries), false); //是否与已加载的jar同名,同名则不再加载 for (int i = 0; i < lst.Count; i++) { string name = new FileInfo(lst[i]).Name; int icount = (from a in _JAssemblyFiles where a.EndsWith(name) select a).Count(); if (icount == 0) continue; lst.RemoveAt(i); i -= 1; } if (lst.Count == 0) return; string allJarNames = string.Join(";", lst); lst.ForEach(f => _JAssemblyFiles.Add(f)); //var jl = JRunEnvironment.Create().Load(allJarNames, JAssembly.IsJarFileZeroCountThrow); //if (JAssembly.jLoader == null) JAssembly.jLoader = jl; var jrfn = JRunEnvironment.Create().LoadBridge(allJarNames, JAssembly.IsJarFileZeroCountThrow); if (JAssembly.jReflection == null) JAssembly.jReflection = jrfn; }
/// <summary> /// 释放整个 jvm 资源,仅在系统退出时调用。 /// </summary> public static void Dispose() { _JAssemblyFiles.Clear(); if (jReflection == null) return; JRunEnvironment.FreeBridge(); jReflection = null; }