コード例 #1
0
ファイル: JAssembly.cs プロジェクト: javasuki/RJava
        /// <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;
        }
コード例 #2
0
ファイル: JAssembly.cs プロジェクト: javasuki/RJava
 /// <summary>
 /// 释放整个 jvm 资源,仅在系统退出时调用。
 /// </summary>
 public static void Dispose()
 {
     _JAssemblyFiles.Clear();
     if (jReflection == null) return;
     JRunEnvironment.FreeBridge();
     jReflection = null;
 }