summaryrefslogtreecommitdiff
path: root/src/main/java/org/javacs/Lib.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/javacs/Lib.java')
-rw-r--r--src/main/java/org/javacs/Lib.java21
1 files changed, 14 insertions, 7 deletions
diff --git a/src/main/java/org/javacs/Lib.java b/src/main/java/org/javacs/Lib.java
index 924f98c..61c5bc4 100644
--- a/src/main/java/org/javacs/Lib.java
+++ b/src/main/java/org/javacs/Lib.java
@@ -1,15 +1,22 @@
package org.javacs;
+import java.io.File;
+import java.lang.System;
+import java.util.Optional;
import java.nio.file.*;
class Lib {
- static Path installRoot() {
- var root = Paths.get(".").toAbsolutePath();
- var p = root;
- while (p != null && !Files.exists(p.resolve("javaLsFlag.txt"))) p = p.getParent();
- if (p == null) throw new RuntimeException("Couldn't find javaLsFlag.txt in any parent of " + root);
- return p;
+ static Optional<Path> srcZipPath() {
+ return Optional.ofNullable(System.getenv("JAVA_HOME"))
+ .flatMap(home -> Optional.of(Paths.get(home).resolve("lib/src.zip")))
+ .flatMap(path -> {
+ if (path.toFile().exists()) {
+ return Optional.of(path);
+ } else {
+ return Optional.empty();
+ }
+ });
}
- static final Path SRC_ZIP = installRoot().resolve("lib/src.zip");
+ static final Optional<Path> SRC_ZIP = srcZipPath();
}