编者注:这个问题是在2014年提出的,答案可能已经过时了。


我想用最新的JavaFX编程,它需要Java 8。我使用的是IntelliJ 13 CE和Mac OS X 9 Mavericks。我运行了Oracle的Java 8安装程序,文件看起来像是在

/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk

但以前的版本是

/System/Library/Java/JavaFrameworks/jdk1.6....

不知道为什么最新的安装程序把这个放在/Library而不是/System/Library(也不知道有什么区别)。但是/usr/libexec/java_home找不到1.8,所以我找到的所有关于如何设置当前java版本的帖子都不起作用。我已经尝试添加了一个符号链接,使它看起来像1.8在/System/Library中…路径,但没有用。/usr/libexec/java_home -V仍然只列出旧的Java 1.6。

讽刺的是,在“系统首选项”下的“Java”控制面板只显示Java 1.8!

为什么Oracle的安装程序不把它放在它真正应该去的地方?我该如何解决这个问题呢?


当前回答

你可以试试这个:

$ brew search jdk
$ brew install --cask homebrew/cask-versions/adoptopenjdk8
$ /usr/libexec/java_home

 

其他回答

我刚刚在MBP上做了这个,必须使用

$ brew tap homebrew/cask-versions
$ brew cask install java8

为了得到java8来安装。

对于在我的本地计算机上运行应用程序,我开始真正喜欢的一个选项是使用Docker。你可以简单地在官方的JDK容器中运行你的应用程序——这意味着你不必担心在本地机器上设置一切(或者为不同的应用程序运行多个不同版本的JDK等)。

虽然这可能不会帮助您解决当前的安装问题,但这是一种解决方案,意味着您可以避开与试图在开发机器上正确运行Java相关的问题的雷区!

好处是:

不需要在您的本地机器上设置任何版本的Java(您只需要在从Docker Hub中取出的容器中运行Java即可) 只需更改容器上的标记,就可以轻松切换到不同版本的Java。 项目依赖项安装在容器中——所以如果你搞砸了你的配置,你可以简单地破坏容器并重新开始。

一个非常简单的例子:

创建Dockerfile:

FROM java:8
COPY . /usr/src/myapp
WORKDIR /usr/src/myapp

这里我们指定运行SDK版本8的Java容器(Java:8 -要使用Java 7,您只需指定:Java:7) 我们将本地目录映射到容器内的目录:/usr/src/myapp

创建一个docker-compose。yml文件:

version: "2"

services:
  java:
    build: .
    volumes:
      - .:/usr/src/myapp

现在,假设我们有这个Java文件:

HelloWorld.java

public class HelloWorld {
    public static void main(String[] args) {        
        System.out.println("Hello, World");
    }
}

所以我们有如下的文件结构:

.
|_ Dockerfile
|_ docker-compose.yml
|_ HelloWorld.java

你可以做各种Java的事情,比如:

编译:

docker-compose run --rm java javac HelloWorld.java 

您应该注意到,HelloWorld.class显示在您的当前目录中(这是因为我们已经将当前目录映射到代码所在的容器内的位置

run:

docker-compose run --rm java java HelloWorld 

注意:第一次运行时,它将获取图像等。这需要一段时间,因为这只是第一次发生 Docker-compose run——从容器内部运行命令 -rm告诉docker在命令运行完成后删除容器 Java是服务/容器的名称(来自我们的docker-compose文件),该命令将对其运行 这一行的其余部分是在容器中运行的命令。

这是一种非常酷的方式,可以为不同的应用程序运行不同版本的Java,而不会使您的本地设置完全混乱:)。

下面是一个稍微复杂一点的例子,它有Maven和一个简单的Spring应用程序

免责声明:

我还没有在IntelliJ这样的IDE中真正尝试过这一点——所以不完全确定这方面的事情将如何工作。虽然看起来docker支持即将到来 下面是一个使用Spring Boot、Zuul和Docker运行微服务的复杂示例

截至2022年5月17日,本网站有jre8u33的下载链接: https://java.com/en/download/mac_download.jsp

它是一个dmg,将在MacOS上安装java 8。

brew cask install caskroom/versions/java8

你可以试试这个:

$ brew search jdk
$ brew install --cask homebrew/cask-versions/adoptopenjdk8
$ /usr/libexec/java_home