diff options
author | Leigh McCulloch <leigh@mcchouse.com> | 2019-03-06 07:09:59 +0000 |
---|---|---|
committer | Leigh McCulloch <leigh@mcchouse.com> | 2019-03-06 07:09:59 +0000 |
commit | 08c64ab031d0c120eaa4d014c4f107f8a347d9c6 (patch) | |
tree | 5474be2ceb6a305ccfb9f54f90b788c0afe17c78 | |
parent | 4a850518b55629cb87f9f6b32d7ea6023ed03424 (diff) | |
download | java-language-server-08c64ab031d0c120eaa4d014c4f107f8a347d9c6.zip |
Support other locations for finding src.zip
What
===
Support other locations for finding src.zip so that it is found it if
lives at either:
- JAVA_HOME/lib/src.zip
- JAVA_HOME/src.zip
Why
===
I've observed in testing that some installations of JVMs include src.zip
in the root, others in a lib/src.zip.
-rw-r--r-- | src/main/java/org/javacs/Lib.java | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/src/main/java/org/javacs/Lib.java b/src/main/java/org/javacs/Lib.java index 61c5bc4..083e69c 100644 --- a/src/main/java/org/javacs/Lib.java +++ b/src/main/java/org/javacs/Lib.java @@ -3,18 +3,25 @@ package org.javacs; import java.io.File; import java.lang.System; import java.util.Optional; +import java.util.Arrays; import java.nio.file.*; class Lib { 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(); + .map(home -> { + return Arrays.asList(new Path[]{ + Paths.get(home).resolve("lib/src.zip"), + Paths.get(home).resolve("src.zip"), + }); + }) + .flatMap(paths -> { + for (Path path : paths) { + if (path.toFile().exists()) { + return Optional.of(path); + } } + return Optional.empty(); }); } |