aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
Diffstat (limited to 'Library')
-rw-r--r--Library/Homebrew/extend/os/mac/requirements/java_requirement.rb21
1 files changed, 19 insertions, 2 deletions
diff --git a/Library/Homebrew/extend/os/mac/requirements/java_requirement.rb b/Library/Homebrew/extend/os/mac/requirements/java_requirement.rb
index 2f132d740..2a48f02bd 100644
--- a/Library/Homebrew/extend/os/mac/requirements/java_requirement.rb
+++ b/Library/Homebrew/extend/os/mac/requirements/java_requirement.rb
@@ -1,13 +1,30 @@
class JavaRequirement < Requirement
- cask "java"
-
env do
env_java_common
env_oracle_jdk || env_apple
end
+ # A strict Java 8 requirement (1.8) should prompt the user to install
+ # the legacy java8 cask because the current version, Java 9, is not
+ # completely backwards compatible, and contains breaking changes such as
+ # strong encapsulation of JDK-internal APIs and a modified version scheme
+ # (9.0 not 1.9).
+ def cask
+ if @version.nil? || @version.to_s.end_with?("+") ||
+ @version.to_f >= JAVA_CASK_MAP.keys.max.to_f
+ JAVA_CASK_MAP.fetch(JAVA_CASK_MAP.keys.max)
+ else
+ JAVA_CASK_MAP.fetch("1.8")
+ end
+ end
+
private
+ JAVA_CASK_MAP = {
+ "1.8" => "caskroom/versions/java8",
+ "9.0" => "java",
+ }.freeze
+
def possible_javas
javas = []
javas << Pathname.new(ENV["JAVA_HOME"])/"bin/java" if ENV["JAVA_HOME"]