Skip to content

Commit 6b05f1e

Browse files
committed
FISH-7674 Error starting Payara 5 with JDK 8 from within Eclipse IDE
1 parent e69732c commit 6b05f1e

3 files changed

Lines changed: 30 additions & 94 deletions

File tree

bundles/fish.payara.eclipse.tools.server/src/fish/payara/eclipse/tools/server/sdk/server/ServerTasks.java

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -239,14 +239,7 @@ private static JDK.Version getJavaVersion(StartupArgs args) {
239239
return JDK_VERSION;
240240
}
241241

242-
String[] versions = JavaUtils.getJavaVersionString(args.getJavaHome()).split(":");
243-
JDK.Version targetJDKVersion = null;
244-
245-
if (versions.length > 0) {
246-
targetJDKVersion = JDK.getVersion(versions[0], System.getProperty("java.vendor"));
247-
}
248-
249-
return targetJDKVersion;
242+
return JavaUtils.getJavaVersion(args.getJavaHome());
250243
}
251244

252245
public static Integer getDebugPort(ResultProcess process) {

bundles/fish.payara.eclipse.tools.server/src/fish/payara/eclipse/tools/server/sdk/utils/JavaUtils.java

Lines changed: 29 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
import java.io.BufferedReader;
2424
import java.io.File;
25+
import java.io.FileReader;
2526
import java.io.IOException;
2627
import java.io.InputStream;
2728
import java.io.InputStreamReader;
@@ -38,6 +39,8 @@
3839
import java.util.regex.Pattern;
3940

4041
import fish.payara.eclipse.tools.server.sdk.logging.Logger;
42+
import fish.payara.eclipse.tools.server.sdk.server.JDK;
43+
import fish.payara.eclipse.tools.server.sdk.server.JDK.Version;
4144
import fish.payara.eclipse.tools.server.sdk.server.config.JavaSEPlatform;
4245

4346
/**
@@ -274,63 +277,32 @@ public static JavaVersion javaVmVersion(File javaVm) {
274277
return new JavaVersion(major, minor, revision, patch);
275278
}
276279

277-
public static String getJavaVersionString(String javaHome) {
278-
return getJavaVersionString(new File(javaVmExecutableFullPath(javaHome)));
279-
}
280-
281-
public static String getJavaVersionString(File javaVm) {
282-
List<String> javaVersions = new ArrayList<>();
283-
284-
try {
285-
CodeSource src = JavaVersionDetector.class.getProtectionDomain().getCodeSource();
286-
if (src != null) {
287-
288-
String className = JavaVersionDetector.class.getName();
289-
String classFileName = JavaVersionDetector.class.getSimpleName() + ".class";
290-
String classFilePackage = JavaVersionDetector.class.getPackage().getName().replace('.', '/');
291-
292-
URL classURL = JavaVersionDetector.class.getResource(classFileName);
293-
294-
if (classURL != null) {
295-
try (InputStream inputStream = classURL.openConnection().getInputStream()) {
296-
297-
Path rootClassPath = Files.createTempDirectory("JavaVersionDetector");
298-
299-
Files.copy(
300-
inputStream,
301-
Files.createDirectories(rootClassPath.resolve(classFilePackage))
302-
.resolve(classFileName));
303-
304-
Process process = new ProcessBuilder(
305-
javaVm.getAbsolutePath(),
306-
VM_CLASSPATH_OPTION, rootClassPath.toAbsolutePath().toString(),
307-
className)
308-
.start();
309-
310-
try (Scanner scanner = new Scanner(process.getErrorStream())) {
311-
scanner.useDelimiter("\\A")
312-
.forEachRemaining(e -> javaVersions.add(e));
313-
}
314-
315-
}
316-
}
317-
}
318-
} catch (Exception e) {
319-
LOGGER.log(WARNING, "javaVmVersion", "Caught exception when getting VM version", e);
320-
}
321-
322-
if (!javaVersions.isEmpty()) {
323-
return javaVersions.get(0);
324-
}
325-
326-
JavaVersion version = javaVmVersion(javaVm);
327-
328-
if (version != null) {
329-
return version.toString();
330-
}
331-
332-
return null;
333-
}
280+
public static Version getJavaVersion(String javaHome) {
281+
Version javaVersion = null;
282+
if(javaHome != null) {
283+
try (BufferedReader bufferedReader
284+
= new BufferedReader(new FileReader(new File(javaHome, "release")));) { // NOI18N
285+
String implementorLine = null;
286+
String javaVersionLine = null;
287+
String line;
288+
while ((line = bufferedReader.readLine()) != null) {
289+
if (line.startsWith("JAVA_VERSION=")) { // NOI18N
290+
javaVersionLine = line;
291+
} else if (line.startsWith("IMPLEMENTOR=")) { // NOI18N
292+
implementorLine = line;
293+
}
294+
}
295+
if (javaVersionLine != null) {
296+
String version = javaVersionLine.substring(javaVersionLine.indexOf("\"") + 1, javaVersionLine.lastIndexOf("\"")); // NOI18N
297+
String vendor = implementorLine != null ? implementorLine.substring(implementorLine.indexOf("\"") + 1, implementorLine.lastIndexOf("\"")) : null; // NOI18N
298+
javaVersion = JDK.getVersion(version, vendor);
299+
}
300+
} catch (IOException ex) {
301+
LOGGER.log(WARNING, "javaVmVersion", "Caught exception when getting VM version", ex);
302+
}
303+
}
304+
return javaVersion;
305+
}
334306

335307
/**
336308
* Build Java VM executable full path from Java Home directory.

bundles/fish.payara.eclipse.tools.server/src/fish/payara/eclipse/tools/server/sdk/utils/JavaVersionDetector.java

Lines changed: 0 additions & 29 deletions
This file was deleted.

0 commit comments

Comments
 (0)