Skip to content

Commit 5e4f2ea

Browse files
committed
If java home not found in windows, try to find it
1 parent 141b3c2 commit 5e4f2ea

File tree

2 files changed

+35
-15
lines changed

2 files changed

+35
-15
lines changed

tmc-langs-java/build_log.txt

Whitespace-only changes.

tmc-langs-java/src/main/java/fi/helsinki/cs/tmc/langs/java/maven/MavenInvokatorMavenTaskRunner.java

Lines changed: 35 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -28,21 +28,44 @@
2828
import java.nio.file.Paths;
2929
import java.nio.file.StandardCopyOption;
3030
import java.util.Arrays;
31-
31+
import java.util.Optional;
3232

3333
public class MavenInvokatorMavenTaskRunner implements MavenTaskRunner {
3434

3535
private static final Logger log = LoggerFactory.getLogger(MavenInvokatorMavenTaskRunner.class);
3636

37-
private static final String MAVEN_OPTS =
38-
"-Dmaven.compiler.source=1.8 -Dmaven.compiler.target=1.8"
37+
private static final String MAVEN_OPTS = "-Dmaven.compiler.source=1.8 "
38+
+ " -Dmaven.compiler.target=1.8"
3939
+ " -XX:+TieredCompilation -XX:TieredStopAtLevel=1";
4040

41+
private static final Path WINDOWS_JAVA_DEFAULT_FOLDER = Paths.get("C:\\Program Files\\Java");
42+
4143
@Override
4244
public MavenExecutionResult exec(Path projectPath, String[] mavenArgs) {
4345

4446
InvocationRequest request = new DefaultInvocationRequest();
4547
request.setMavenOpts(MAVEN_OPTS);
48+
49+
try {
50+
String javaHome = System.getenv("JAVA_HOME");
51+
if (SystemUtils.IS_OS_WINDOWS
52+
&& (javaHome == null || javaHome.trim().isEmpty()
53+
|| !Files.exists(Paths.get(javaHome.trim())))) {
54+
String currentJava = System.getProperty("java.version").trim();
55+
Optional<Path> foundHome = Files.list(WINDOWS_JAVA_DEFAULT_FOLDER)
56+
.filter(Files::isDirectory)
57+
.filter(path -> {
58+
return path.getFileName().toString().contains(currentJava);
59+
}).findAny();
60+
if (foundHome.isPresent()) {
61+
Path home = foundHome.get();
62+
request.setJavaHome(home.toFile());
63+
}
64+
}
65+
} catch (Exception e) {
66+
log.debug("Could not fix java home", e);
67+
}
68+
4669
try {
4770
String jdkhome = System.getenv("jdkhome");
4871
if (jdkhome != null) {
@@ -55,7 +78,6 @@ public MavenExecutionResult exec(Path projectPath, String[] mavenArgs) {
5578
log.debug("jdkhome variable not valid, skipping", e);
5679
}
5780

58-
5981
String mavenHome = System.getenv("M3_HOME");
6082
if (mavenHome == null) {
6183
mavenHome = System.getenv("M2_HOME");
@@ -83,16 +105,14 @@ public MavenExecutionResult exec(Path projectPath, String[] mavenArgs) {
83105
InvocationResult result = null;
84106
request.setPomFile(projectPath.resolve("pom.xml").toFile());
85107
request.setBaseDirectory(projectPath.toFile());
86-
request.setOutputHandler(
87-
line -> {
88-
log.info("MavenInvokator: {}", line);
89-
out.println(line);
90-
});
91-
request.setErrorHandler(
92-
line -> {
93-
log.info("MavenInvokator: {}", line);
94-
err.println(line);
95-
});
108+
request.setOutputHandler(line -> {
109+
log.info("MavenInvokator: {}", line);
110+
out.println(line);
111+
});
112+
request.setErrorHandler(line -> {
113+
log.info("MavenInvokator: {}", line);
114+
err.println(line);
115+
});
96116

97117
request.setGoals(Arrays.asList(mavenArgs));
98118

@@ -155,7 +175,7 @@ static Path getConfigDirectory() {
155175
configPath = Paths.get(appdata);
156176
}
157177
} else {
158-
//Assume we're using Unix (Linux, Mac OS X or *BSD)
178+
// Assume we're using Unix (Linux, Mac OS X or *BSD)
159179
String configEnv = System.getenv("XDG_CONFIG_HOME");
160180

161181
if (configEnv != null && configEnv.length() > 0) {

0 commit comments

Comments
 (0)