405

MacOS に追加の Java をインストールするにはどうすればよいですか? jdk8をインストールしましたが、うまくいきました。しかし、開発目的で jdk7 をインストールする必要があります。DMG ファイルを使用して古いバージョンをインストールしようとすると、新しいバージョンの Java が既にインストールされているという警告が表示され、インストーラーが終了します。

    /usr/libexec/java_home -verbose
    Matching Java Virtual Machines (1):
        1.8.0_20, x86_64:   "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home

       /Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home

これに加えてjdk7をインストールする方法は?

4

18 に答える 18

568

The cleanest way to manage multiple java versions on Mac is to use Homebrew.

And within Homebrew, use:

  • homebrew-cask to install the versions of java
  • jenv to manage the installed versions of java

As seen on http://hanxue-it.blogspot.ch/2014/05/installing-java-8-managing-multiple.html , these are the steps to follow.

  1. install homebrew
  2. install homebrew jenv
  3. install homebrew-cask
  4. install a specific java version using cask (see "homebrew-cask versions" paragraph below)
  5. add this version for jenv to manage it
  6. check the version is correctly managed by jenv
  7. repeat steps 4 to 6 for each version of java you need

homebrew-cask versions

Add the homebrew/cask-versions tap to homebrew using:

brew tap homebrew/cask-versions

Then you can look at all the versions available:

brew search java

Then you can install the version(s) you like:

brew cask install java7
brew cask install java6

And add them to be managed by jenv as usual.

jenv add <javaVersionPathHere>

I think this is the cleanest & simplest way to go about it.


Another important thing to note, as mentioned in Mac OS X 10.6.7 Java Path Current JDK confusing :

For different types of JDKs or installations, you will have different paths

You can check the paths of the versions installed using /usr/libexec/java_home -V, see How do I check if the Java JDK is installed on Mac?

On Mac OS X Mavericks, I found as following:

1) Built-in JRE default: /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home

2) JDKs downloaded from Apple: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/

3) JDKs downloaded from Oracle: /Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home


Resources

于 2015-03-22T14:53:21.647 に答える
364

jdk8 をアンインストールし、jdk7 をインストールしてから、jdk8 を再インストールします。

それらを切り替えるための私のアプローチ(.profile内):

export JAVA_7_HOME=$(/usr/libexec/java_home -v1.7)
export JAVA_8_HOME=$(/usr/libexec/java_home -v1.8)
export JAVA_9_HOME=$(/usr/libexec/java_home -v9)

alias java7='export JAVA_HOME=$JAVA_7_HOME'
alias java8='export JAVA_HOME=$JAVA_8_HOME'
alias java9='export JAVA_HOME=$JAVA_9_HOME'

#default java8
export JAVA_HOME=$JAVA_8_HOME

次に、端末にjava7orを入力するだけでバージョンを切り替えることができます。java8

(編集:Java 9のDylansの改善を追加するために更新されました)

于 2014-10-08T09:02:32.067 に答える
5

Mac OS X 10.9.5 を使用しています。これは、あるバージョンでアプリケーション A を実行し、別のバージョンをアプリケーション B に使用する必要がある場合に、自分のマシンで複数の JDK/JRE を管理する方法です。

オンラインでヘルプを入手した後、次のスクリプトを作成しました。

#!bin/sh
function setjdk() {
  if [ $# -ne 0 ]; then
   removeFromPath '/Library/Java/JavaVirtualMachines/'
   if [ -n "${JAVA_HOME+x}" ]; then
    removeFromPath $JAVA_HOME
   fi
   export JAVA_HOME=/Library/Java/JavaVirtualMachines/$1/Contents/Home
   export PATH=$JAVA_HOME/bin:$PATH
  fi
 }
 function removeFromPath() {
  export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;")
 }
#setjdk jdk1.8.0_60.jdk
setjdk jdk1.7.0_15.jdk

上記のスクリプトを .profile ファイルに入れました。ターミナルを開いて vi .profile と入力し、スクリプトに上記のスニペットを追加して保存します。out と入力source .profileすると、端末を再起動しなくてもプロファイル スクリプトが実行されます。現在java -versionのバージョンとして 1.7 と表示されるはずです。1.8 に変更する場合は、その行setjdk jdk1.7.0_15.jdkをコメント化し、その行のコメントを外しsetjdk jdk1.8.0_60.jdkます。スクリプトを保存し、source コマンドで再度実行します。このメカニズムを使用して、異なる Java バージョンを必要とする 2 つの異なる Maven プロジェクトをコンパイルする必要がある場合に、JDK/JRE の複数のバージョンを管理します。

于 2015-09-18T22:47:59.483 に答える
4

Mac Sierra 上の Jenv:

インストール後に機能しない場合は、このバグ修正を行って Java 実行可能ファイルをパスに追加します

export PATH="$HOME/.jenv/shims:$PATH"

eval "$(jenv init -)"この仕事ができたとしても。その理由は、ホームページに記載されているように /bin フォルダーがなくなったためですが、代わりに shim フォルダーが /bin として使用されます。

  • ~/.jenv があることを確認してください
  • which java/Library/... を印刷できます
  • jenv グローバル 1.8
  • jenv シェル 1.8

最終的に、次のwhich javaようになります。

/Users/xxxx/.jenv/shims/java

于 2016-10-31T01:06:40.800 に答える