Beispiel #1
0
        /// <summary>
        /// Initializes the <see cref="Os"/> class.
        /// </summary>
        static Os()
        {
            var platform = Environment.OSVersion.Platform;

            IsLinux = platform == PlatformID.Unix ||
                      platform == PlatformID.MacOSX ||
                      (int)Environment.OSVersion.Platform == 128;

            IsWindows = platform == PlatformID.Win32NT ||
                        platform == PlatformID.Win32S ||
                        platform == PlatformID.Win32Windows;

            IsMacOs   = IsLinux && Shell.BashExecute("uname").Contains("Darwin");
            IsMono    = Type.GetType("Mono.Runtime") != null;
            IsNetCore = !IsMono;
        }
Beispiel #2
0
        /// <summary>
        /// Gets the Jvm dll paths from /usr/bin/java symlink.
        /// </summary>
        private static IEnumerable <KeyValuePair <string, string> > GetJvmDllPathsLinux()
        {
            if (Os.IsWindows || Os.IsMacOs)
            {
                yield break;
            }

            const string javaExec = "/usr/bin/java";

            if (!File.Exists(javaExec))
            {
                yield break;
            }

            var file = Shell.BashExecute("readlink -f /usr/bin/java");
            // /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java

            var dir = Path.GetDirectoryName(file);

            // /usr/lib/jvm/java-8-openjdk-amd64/jre/bin

            if (dir == null)
            {
                yield break;
            }

            var libFolder = Path.GetFullPath(Path.Combine(dir, "../lib/"));

            if (!Directory.Exists(libFolder))
            {
                yield break;
            }

            // Predefined path: /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so
            yield return(new KeyValuePair <string, string>(javaExec,
                                                           Path.Combine(libFolder, "amd64", "server", FileJvmDll)));

            // Last resort - custom paths:
            foreach (var f in Directory.GetFiles(libFolder, FileJvmDll, SearchOption.AllDirectories))
            {
                yield return(new KeyValuePair <string, string>(javaExec, f));
            }
        }