Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/java/jres/graalvm.go
Original file line number Diff line number Diff line change
Expand Up @@ -215,5 +215,5 @@ func (g *GraalVMJRE) findJavaHome() (string, error) {
// writeProfileDScript creates a profile.d script that exports JAVA_HOME, JRE_HOME, and PATH at runtime
// Delegates to the shared helper function in jre.go
func (g *GraalVMJRE) writeProfileDScript() error {
return WriteJavaHomeProfileD(g.ctx, g.jreDir, g.javaHome)
return WriteJavaHomeProfileD(g.ctx, g.jreDir, g.javaHome, g.Name())
}
2 changes: 1 addition & 1 deletion src/java/jres/ibm.go
Original file line number Diff line number Diff line change
Expand Up @@ -219,5 +219,5 @@ func (i *IBMJRE) findJavaHome() (string, error) {

// writeProfileDScript creates the profile.d script for setting JAVA_HOME, JRE_HOME, and PATH at runtime
func (i *IBMJRE) writeProfileDScript() error {
return WriteJavaHomeProfileD(i.ctx, i.jreDir, i.javaHome)
return WriteJavaHomeProfileD(i.ctx, i.jreDir, i.javaHome, i.Name())
}
31 changes: 29 additions & 2 deletions src/java/jres/jre.go
Original file line number Diff line number Diff line change
Expand Up @@ -374,9 +374,10 @@ func WriteJavaOptsWithPriority(ctx *common.Context, priority int, name string, o
// 1. Exports JAVA_HOME using $DEPS_DIR runtime variable
// 2. Exports JRE_HOME (same as JAVA_HOME)
// 3. Prepends $JAVA_HOME/bin to PATH
// 4. Create symlink with old ruby based jre path to JAVA_HOME. See https://github.com/cloudfoundry/java-buildpack/issues/1151
//
// It also sets these environment variables during staging for use by frameworks.
func WriteJavaHomeProfileD(ctx *common.Context, jreDir, javaHome string) error {
func WriteJavaHomeProfileD(ctx *common.Context, jreDir, javaHome, jreName string) error {
// Compute relative path from jreDir to javaHome
relPath, err := filepath.Rel(jreDir, javaHome)
if err != nil {
Expand All @@ -396,12 +397,38 @@ func WriteJavaHomeProfileD(ctx *common.Context, jreDir, javaHome string) error {
javaHomePath = fmt.Sprintf("$DEPS_DIR/%s/jre/%s", depsIdx, relPath)
}

var jreFolder string
switch jreName {
case "OpenJDK":
jreFolder = "open_jdk_jre"
case "SapMachine":
jreFolder = "sap_machine_jre"
case "Oracle JRE":
jreFolder = "oracle_jre"
case "Zing JRE":
jreFolder = "zing_jre"
case "Zulu":
jreFolder = "zulu_jre"
case "GraalVM":
jreFolder = "graal_vm_jre"
case "IBM JRE":
jreFolder = "ibm_jre"
default:
jreFolder = "open_jdk_jre"
}

// Create the profile.d script content with JAVA_HOME, JRE_HOME, and PATH
// Following the pattern from reference buildpacks (Ruby, Python, Go)
// Symlink to JAVA_HOME is added following the old ruby based buidpack jre path due to possible compatibility issues
// because ruby based bp apps relied on hardcoded paths to jre home. Thus providing the same path giving them possibility
// to migrate without breaking them when migrating to the go-based version.
// For more info check https://github.com/cloudfoundry/java-buildpack/issues/1151
envContent := fmt.Sprintf(`export JAVA_HOME=%s
export JRE_HOME=%s
export PATH=$JAVA_HOME/bin:$PATH
`, javaHomePath, javaHomePath)
mkdir -p /home/vcap/app/.java-buildpack
ln -sf $JAVA_HOME /home/vcap/app/.java-buildpack/%s
`, javaHomePath, javaHomePath, jreFolder)

// Write the profile.d script using libbuildpack API
if err := ctx.Stager.WriteProfileD("java.sh", envContent); err != nil {
Expand Down
2 changes: 1 addition & 1 deletion src/java/jres/openjdk.go
Original file line number Diff line number Diff line change
Expand Up @@ -250,5 +250,5 @@ func (o *OpenJDKJRE) findJavaHome() (string, error) {
// writeProfileDScript creates a profile.d script that exports JAVA_HOME, JRE_HOME, and PATH at runtime
// Delegates to the shared helper function in jre.go
func (o *OpenJDKJRE) writeProfileDScript() error {
return WriteJavaHomeProfileD(o.ctx, o.jreDir, o.javaHome)
return WriteJavaHomeProfileD(o.ctx, o.jreDir, o.javaHome, o.Name())
}
2 changes: 1 addition & 1 deletion src/java/jres/oracle.go
Original file line number Diff line number Diff line change
Expand Up @@ -208,5 +208,5 @@ func (o *OracleJRE) findJavaHome() (string, error) {

// writeProfileDScript creates the profile.d script for setting JAVA_HOME, JRE_HOME, and PATH at runtime
func (o *OracleJRE) writeProfileDScript() error {
return WriteJavaHomeProfileD(o.ctx, o.jreDir, o.javaHome)
return WriteJavaHomeProfileD(o.ctx, o.jreDir, o.javaHome, o.Name())
}
2 changes: 1 addition & 1 deletion src/java/jres/sapmachine.go
Original file line number Diff line number Diff line change
Expand Up @@ -215,5 +215,5 @@ func (s *SapMachineJRE) findJavaHome() (string, error) {
// writeProfileDScript creates a profile.d script that exports JAVA_HOME, JRE_HOME, and PATH at runtime
// Delegates to the shared helper function in jre.go
func (s *SapMachineJRE) writeProfileDScript() error {
return WriteJavaHomeProfileD(s.ctx, s.jreDir, s.javaHome)
return WriteJavaHomeProfileD(s.ctx, s.jreDir, s.javaHome, s.Name())
}
2 changes: 1 addition & 1 deletion src/java/jres/zulu.go
Original file line number Diff line number Diff line change
Expand Up @@ -215,5 +215,5 @@ func (z *ZuluJRE) findJavaHome() (string, error) {
// writeProfileDScript creates a profile.d script that exports JAVA_HOME, JRE_HOME, and PATH at runtime
// Delegates to the shared helper function in jre.go
func (z *ZuluJRE) writeProfileDScript() error {
return WriteJavaHomeProfileD(z.ctx, z.jreDir, z.javaHome)
return WriteJavaHomeProfileD(z.ctx, z.jreDir, z.javaHome, z.Name())
}