当前位置:首页 > 操作系统 > MacOs

macos – 为什么/usr/libexec / java_home不能识别JDK 1.8?

我正在尝试在OS X Mountain Lion上安装JDK 8(以试验新的lambda功能).

初始点

最近从OS X 10.6更新到10.8的机器

<code>$sw_vers
  ProductName:    Mac OS X
  ProductVersion: 10.8.2
  BuildVersion:   12C60

$ls -l /Library/Java/JavaVirtualMachines/
  Home@ -> jdk1.7.0_09.jdk/Contents/Home/
  jdk1.7.0_09.jdk/

$ls -l /System/Library/Java/JavaVirtualMachines/
  1.6.0.jdk/
</code>

和OS X 10.6时代的这个文件夹:

<code>/System/Library/Frameworks/JavaVM.framework/Versions/
</code>

在?/ .bashrc我已经设置好了

<code>export JAVA_HOME=/Library/Java/JavaVirtualMachines/Home
</code>

所以我有

<code>$java -version
  java version "1.7.0_09"
  Java(TM) SE Runtime Environment (build 1.7.0_09-b05)
  Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode)

$/usr/libexec/java_home
  /Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home
</code>

我是如何安装JDK 8的

>从http://jdk8.java.net/lambda/下载.tar.gz文件并将其解压缩到

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

(我手动创建了文件夹jdk1.8.0.jdk / Contents / Home)
>将symlink / Library / Java / JavaVirtualMachines / Home更改为指向jdk1.8

我现在有

<code>$java -version
  openjdk version "1.8.0-ea"
  OpenJDK Runtime Environment (build 1.8.0-ea-lambda-nightly-h2135-20121203-b67-b00)
  OpenJDK 64-Bit Server VM (build 25.0-b05, mixed mode)

$echo $JAVA_HOME
  /Library/Java/JavaVirtualMachines/Home

$ls /Library/Java/JavaVirtualMachines
  Home@ -> jdk1.8.0.jdk/Contents/Home/
  ...
</code>

但java_home实用程序似乎并不关心:

<code>$/usr/libexec/java_home 
  /Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home
</code>

它甚至不知道有可用的JDK 8:

<code>$/usr/libexec/java_home -v 1.8*
  Unable to find any JVMs matching version "1.8*".
</code>

我想/usr/libexec / java_home实用程序来查找我安装的JDK,所以我可以使用这样的东西:

<code>alias setjdk17='export JAVA_HOME=$(/usr/libexec/java_home -v 1.7*)'
alias setjdk18='export JAVA_HOME=$(/usr/libexec/java_home -v 1.8*)'
</code>

并摆脱Home符号链接.有人知道吗

>我如何才能正确安装JDK 8?
>我怎么能让/usr/libexec / java_home认出来呢?

解决方法:

您还需要从1.7 SDK复制Contents / MacOS目录和Info.plist并进行调整(通过更改其中的版本字符串).

然后你可以:

<code>$export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home
$java -version
openjdk version "1.8.0-ea"
$/usr/libexec/java_home -v 1.8*
/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home
</code>

请注意,这是一个黑客攻击,除了启动java之外我没有尝试过其他任何东西……我只是在创建包的过程中构建.


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!

相关教程推荐

其他课程推荐