Opened 10 years ago
Closed 8 years ago
#47036 closed defect (fixed)
jython installation hardcodes JAVA_HOME such that jython will fail if a user upgrades the Java installation
Reported by: | posita (Matt Bogosian) | Owned by: | macports-tickets@… |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | 2.3.3 |
Keywords: | Cc: | ||
Port: | jython |
Description
To reproduce
- install an older version of Java (e.g., jdk1.7.0_67)
- install jython
- upgrade Java (e.g., to jdk1.7.0_75)
- remove the older Java version
- run
jython
- run
JAVA_HOME="$( /usr/libexec/java_home -v 1.7 )" jython
Expected
Both jython
and JAVA_HOME="$( /usr/libexec/java_home -v 1.7 )" jython
should work.
Actual
Both fail, complaining that (e.g.) /Library/Java/JavaVirtualMachines/jdk1.7.0_67.jdk/Contents/Home/bin/java
doesn't exist.
Additional Detail
An inspection of cat $( which jython )
reveals:
... # This file was generated by the Jython installer # Created on ... JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.7.0_67.jdk/Contents/Home/jre" ...
These lines are not present in the original source file. Setting JAVA_HOME
in this manner:
- a) may not be correct for very long; and
- b) permanently overrides any external setting
This leaves the user with hand-editing $( which jython )
or reinstalling jython after every Java upgrade to get it to work, neither of which is ideal.
Change History (3)
comment:1 Changed 10 years ago by posita (Matt Bogosian)
comment:2 Changed 8 years ago by amake (Aaron Madlon-Kay)
This issue should be moot with Jython 2.7.0 as the wrapper script has changed to not hard-code JAVA_HOME
.
comment:3 Changed 8 years ago by neverpanic (Clemens Lang)
Resolution: | → fixed |
---|---|
Status: | new → closed |
Thanks for checking, I'll close this then. It can be re-opened if this still occurs.
Note: See
TracTickets for help on using
tickets.
Reproduction should have included as its first step:
Also, running
JAVA_HOME="$( /usr/libexec/java_home -v 1.7 )" jython
only makes sense on systems where/usr/libexec/java_home
is installed. I forget when Apple started doing this, but I think it was around Lion. The point is that given the current port, one cannot override wherejython
looks for Java via theJAVA_HOME
environment variable, since the execution script overrides it with whatever it found at the time it was installed.Apologies for any confusion.