Fix Java 8 resolution for MfApi restart, refresh targets after settings, and copy errors to clipboard.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,121 @@
|
||||
namespace ZA.CoreService.ESBCertificateManager.Services;
|
||||
|
||||
/// <summary>
|
||||
/// Findet eine nutzbare Java-8-Runtime für Sonic MfApi.
|
||||
/// </summary>
|
||||
public static class JavaRuntimeLocator
|
||||
{
|
||||
public static string? Resolve(
|
||||
string? configuredPath = null)
|
||||
{
|
||||
foreach (string? candidate in EnumerateCandidates(configuredPath))
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(candidate))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
string? resolved = TryResolveExisting(candidate);
|
||||
|
||||
if (resolved is not null)
|
||||
{
|
||||
return resolved;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private static IEnumerable<string?> EnumerateCandidates(
|
||||
string? configuredPath)
|
||||
{
|
||||
if (!string.IsNullOrWhiteSpace(configuredPath))
|
||||
{
|
||||
yield return configuredPath.Trim();
|
||||
}
|
||||
|
||||
yield return
|
||||
@"C:\Program Files (x86)\Java\jre1.8.0_481\bin\java.exe";
|
||||
|
||||
yield return
|
||||
@"C:\Program Files (x86)\Java\jre1.8.0_501\bin\java.exe";
|
||||
|
||||
yield return
|
||||
@"C:\Program Files\Java\jre1.8.0_481\bin\java.exe";
|
||||
|
||||
yield return
|
||||
@"C:\Program Files (x86)\Common Files\Oracle\Java\java8path\java.exe";
|
||||
|
||||
foreach (string root in new[]
|
||||
{
|
||||
@"C:\Program Files (x86)\Java",
|
||||
@"C:\Program Files\Java"
|
||||
})
|
||||
{
|
||||
if (!Directory.Exists(root))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
foreach (string directory in Directory
|
||||
.EnumerateDirectories(root, "jre1.8*")
|
||||
.OrderByDescending(path => path, StringComparer.OrdinalIgnoreCase))
|
||||
{
|
||||
yield return Path.Combine(directory, "bin", "java.exe");
|
||||
}
|
||||
|
||||
foreach (string directory in Directory
|
||||
.EnumerateDirectories(root, "jdk1.8*")
|
||||
.OrderByDescending(path => path, StringComparer.OrdinalIgnoreCase))
|
||||
{
|
||||
yield return Path.Combine(directory, "bin", "java.exe");
|
||||
}
|
||||
}
|
||||
|
||||
string? javaHome =
|
||||
Environment.GetEnvironmentVariable("JAVA_HOME");
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(javaHome))
|
||||
{
|
||||
yield return Path.Combine(
|
||||
javaHome.Trim(),
|
||||
"bin",
|
||||
"java.exe");
|
||||
}
|
||||
|
||||
string? jreHome =
|
||||
Environment.GetEnvironmentVariable("JRE_HOME");
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(jreHome))
|
||||
{
|
||||
yield return Path.Combine(
|
||||
jreHome.Trim(),
|
||||
"bin",
|
||||
"java.exe");
|
||||
}
|
||||
|
||||
yield return "java.exe";
|
||||
}
|
||||
|
||||
private static string? TryResolveExisting(string candidate)
|
||||
{
|
||||
try
|
||||
{
|
||||
string resolved =
|
||||
Path.IsPathRooted(candidate)
|
||||
? Path.GetFullPath(candidate)
|
||||
: Path.GetFullPath(
|
||||
Path.Combine(
|
||||
AppContext.BaseDirectory,
|
||||
candidate));
|
||||
|
||||
return File.Exists(resolved)
|
||||
? resolved
|
||||
: null;
|
||||
}
|
||||
catch
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user