diff --git a/Library/Homebrew/compat/language/java.rb b/Library/Homebrew/compat/language/java.rb index 2bcf485e2f..3ad89ebc74 100644 --- a/Library/Homebrew/compat/language/java.rb +++ b/Library/Homebrew/compat/language/java.rb @@ -5,8 +5,7 @@ module Language class << self module Compat def java_home_cmd(version = nil) - odeprecated "Language::Java.java_home_cmd", - "Language::Java.java_home or Language::Java.overridable_java_home_env" + odeprecated "Language::Java::java_home_cmd", "Language::Java::java_home" # macOS provides /usr/libexec/java_home, but Linux does not. return system_java_home_cmd(version) if OS.mac? diff --git a/Library/Homebrew/extend/os/mac/language/java.rb b/Library/Homebrew/extend/os/mac/language/java.rb index a92b386ece..b552027a9a 100644 --- a/Library/Homebrew/extend/os/mac/language/java.rb +++ b/Library/Homebrew/extend/os/mac/language/java.rb @@ -4,26 +4,18 @@ module Language module Java def self.system_java_home_cmd(version = nil) version_flag = " --version #{version}" if version - "/usr/libexec/java_home#{version_flag} --failfast 2>/dev/null" + "/usr/libexec/java_home#{version_flag}" end private_class_method :system_java_home_cmd def self.java_home(version = nil) - f = find_openjdk_formula(version) - return f.opt_libexec/"openjdk.jdk/Contents/Home" if f - cmd = system_java_home_cmd(version) - path = Utils.popen_read(cmd).chomp - - Pathname.new path if path.present? + Pathname.new Utils.popen_read(cmd).chomp end + # @private def self.java_home_shell(version = nil) - f = find_openjdk_formula(version) - return (f.opt_libexec/"openjdk.jdk/Contents/Home").to_s if f - "$(#{system_java_home_cmd(version)})" end - private_class_method :java_home_shell end end diff --git a/Library/Homebrew/extend/pathname.rb b/Library/Homebrew/extend/pathname.rb index c5b9760659..e0c331f4dd 100644 --- a/Library/Homebrew/extend/pathname.rb +++ b/Library/Homebrew/extend/pathname.rb @@ -370,8 +370,12 @@ class Pathname # Writes an exec script that invokes a Java jar def write_jar_script(target_jar, script_name, java_opts = "", java_version: nil) - (self/script_name).write_env_script "java #{java_opts} -jar #{target_jar}", - Language::Java.overridable_java_home_env(java_version) + mkpath + java_home = ("JAVA_HOME=\"#{Language::Java.java_home_shell(java_version)}\" " if java_version) + join(script_name).write <<~SH + #!/bin/bash + #{java_home}exec java #{java_opts} -jar #{target_jar} "$@" + SH end def install_metafiles(from = Pathname.pwd) diff --git a/Library/Homebrew/language/java.rb b/Library/Homebrew/language/java.rb index 77bddccf5f..612ab32c8d 100644 --- a/Library/Homebrew/language/java.rb +++ b/Library/Homebrew/language/java.rb @@ -2,41 +2,17 @@ module Language module Java - def self.find_openjdk_formula(version = nil) - can_be_newer = version&.end_with?("+") - version = version.to_i - - openjdk = Formula["openjdk"] - [openjdk, *openjdk.versioned_formulae].find do |f| - next false unless f.any_version_installed? - - unless version.zero? - major = f.version.to_s[/\d+/].to_i - next false if major < version - next false if major > version && !can_be_newer - end - - true - end - rescue FormulaUnavailableError - nil - end - private_class_method :find_openjdk_formula - def self.java_home(version = nil) - f = find_openjdk_formula(version) - return f.opt_libexec if f - req = JavaRequirement.new [*version] raise UnsatisfiedRequirements, req.message unless req.satisfied? req.java_home end + # @private def self.java_home_shell(version = nil) java_home(version).to_s end - private_class_method :java_home_shell def self.java_home_env(version = nil) { JAVA_HOME: java_home_shell(version) }