java 6 on mac os x 10.7.5

2019-07-25 10:34发布

问题:

On my Mac, I deleted java locally, just deleted the folder with java (/System/Library/Frameworks/JavaVM.framework/Versions/).

When I install java 6 again, I was installed into: /Library/Java/JavaVirtualMachines/

Then after installation new one, I have this error when trying to invoke './java' from the console:

Here I put java into my home directory. But, even if use standard one I've got the same exception:

dyld: Library not loaded: /System/Library/Frameworks/JavaVM.framework/Versions/A/JavaVM
  Referenced from: /Users/myuser/java/1.6.0.jdk/Contents/Home/bin/./java
  Reason: image not found
Trace/BPT trap: 5

Is there any way to fix it?

---2---

Here I just copied working Java 6 from different machine and put to proper/default location, then go to .../bin and type ./java:

$ pwd
/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin
$ ./java -version
dyld: Library not loaded: @rpath/libjli.jnilib
  Referenced from: /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/./java
  Reason: image not found
Trace/BPT trap: 5

But if install Java 7, it works perfectly.

--3--

If install JavaDeveloper.pkg package (javadeveloper_for_os_x_2012006__11m3909.dmg) with jdk6 in it - from Apple site

dyld: Library not loaded: /System/Library/Frameworks/JavaVM.framework/Versions/A/JavaVM Referenced from: /Library/Java/JavaVirtualMachines/1.6.0_37-b06-434.jdk/Contents/Home/bin/./java Reason: image not found Trace/BPT trap: 5

--4--

If try to install java 6 (open jdk) from mac ports

$ sudo port install openjdk6

info:build Exiting because of the above error(s). \n 
:info:build make: *** [post-sanity] Error 1
:info:build Command failed:  cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_java_openjdk6/openjdk6/work/." && /usr/bin/make  ARCH_DATA_MODEL="64" ALT_BOOTDIR="/opt/local/share/java/openjdk6_bootstrap" ALT_JDK_IMPORT_PATH="/opt/local/share/java/openjdk6_bootstrap" ALT_BINARY_PLUGS_PATH="/opt/local/share/java/icedtea6-plugs/jre/lib/rt-closed.jar" ALT_DROPS_DIR="/opt/local/var/macports/distfiles/openjdk6" ANT_HOME="/opt/local/share/java/apache-ant" ALT_FREETYPE_HEADERS_PATH="/opt/local/include" ALT_FREETYPE_LIB_PATH="/opt/local/lib" ALT_CUPS_HEADERS_PATH="/usr/include" ALT_MOTIF_DIR="/opt/local" ALT_X11_PATH="/opt/local" ALT_DEVTOOLS_PATH=/usr ALT_CACERTS_FILE=/System/Library/Frameworks/JavaVM.framework/Home/lib/security/cacerts NO_DOCS=true LANG="C" BUILD_NUMBER="b20" MILESTONE=fcs HOTSPOT_BUILD_JOBS="2"  
**:info:build Exit code: 2
:error:build org.macports.build for port openjdk6 returned: command execution failed
:debug:build Error code: CHILDSTATUS 7773 2
:debug:build Backtrace: command execution failed**

回答1:

Ok. I fixed it.

The problem was that there are two places that Java is located.

  1. /System/Library/Frameworks/JavaVM.framework (were real jdk 6 is located)
  2. /Library/Java/JavaVirtualMachines/ (were may java6 is now, it has only links)

And if put JDK to source 1, it will try refers to source 2 (by symlinks) using specific version of java (in my case it is 1.6.0) and it could not find proper object/file to link to.

As soon as I fixed it started working.

So, I just restored all contents, getting it from another working machine. Bu the idea is that Mac OS uses two locations to store java related files.