Browse Source

LangUtil: improve Java version major/minor parsing

- Ignore everything including and after '+' in versions like '19+36-2238'
- Add minor '.0' to Java versions like '19', '19+36-2238'

Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
tags/V1_9_19
Alexander Kriegisch 1 year ago
parent
commit
0ff75f28fe
1 changed files with 4 additions and 3 deletions
  1. 4
    3
      util/src/main/java/org/aspectj/util/LangUtil.java

+ 4
- 3
util/src/main/java/org/aspectj/util/LangUtil.java View File

@@ -96,16 +96,17 @@ public class LangUtil {
private static List<Integer> getJavaMajorMinor(String vm) {
List<Integer> result = new ArrayList<>();
// Can be something like '1.5', '11.0.16.1', '19+36-2238'
StringTokenizer st = new StringTokenizer(vm,".-_+");
StringTokenizer st = new StringTokenizer(vm.replaceFirst("[+].*", ""), ".-_");
try {
result.add(Integer.parseInt(st.nextToken()));
// FIXME: The minor will be wrong for version strings like '19+36-2238'.
// The minor is only relevant for Java <= 1.8. Even so, this is super ugly.
result.add(Integer.parseInt(st.nextToken()));
} catch (Exception e) {
// NoSuchElementException if no more tokens
// NumberFormatException if not a number
}
// Always add a default minor, just in case a caller expects it
if (result.size() == 1)
result.add(0);
return result;
}


Loading…
Cancel
Save