MCPcopy Index your code
hub / github.com/cloudfoundry/java-buildpack / DetermineJavaVersion

Function DetermineJavaVersion

src/java/common/context.go:64–103  ·  view source on GitHub ↗

DetermineJavaVersion determines the major Java version from a Java installation by reading the JAVA_VERSION field from the release file. Parameters: - javaHome: Path to the Java installation (e.g., /deps/0/jre) Returns the major version (8, 11, 17, etc.) or an error if unable to determine. Exampl

(javaHome string)

Source from the content-addressed store, hash-verified

62//
63// version, err := DetermineJavaVersion("/deps/0/jre")
64func DetermineJavaVersion(javaHome string) (int, error) {
65
66 releaseFile := filepath.Join(javaHome, "release")
67 content, err := os.ReadFile(releaseFile)
68 if err != nil {
69 return 17, fmt.Errorf("failed to read release file: %w", err)
70 }
71
72 // Parse JAVA_VERSION from release file
73 // Format: JAVA_VERSION="1.8.0_422" or JAVA_VERSION="17.0.13"
74 lines := strings.Split(string(content), "\n")
75 for _, line := range lines {
76 if !strings.HasPrefix(line, "JAVA_VERSION=") {
77 continue
78 }
79
80 // Extract version string from JAVA_VERSION="..."
81 version := strings.Trim(strings.TrimPrefix(line, "JAVA_VERSION="), "\"")
82
83 // Handle Java 7/8 format: 1.8.x or 1.7.x
84 if strings.HasPrefix(version, "1.8") {
85 return 8, nil
86 }
87 if strings.HasPrefix(version, "1.7") {
88 return 7, nil
89 }
90
91 // Handle Java 9+ format: major version is first number
92 // Examples: "11.0.1", "17.0.13", "21.0.1"
93 dotIndex := strings.Index(version, ".")
94 if dotIndex > 0 {
95 majorStr := version[:dotIndex]
96 if major, err := strconv.Atoi(majorStr); err == nil {
97 return major, nil
98 }
99 }
100 }
101
102 return 17, fmt.Errorf("unable to parse Java version from release file")
103}
104
105// GetJavaMajorVersion returns the Java major version from the JAVA_HOME environment variable.
106// This is a convenience wrapper around DetermineJavaVersion that reads JAVA_HOME from the environment.

Callers 5

jre_test.goFile · 0.92
SupplyMethod · 0.92
FinalizeMethod · 0.92
GetJavaMajorVersionFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected