在macOS上使用Nix安装Scala Sierra
我想用Nix安装OpenJDK 8或Oracle JDK 8以及Scala。在macOS上使用Nix安装Scala Sierra
我通过直接安装Oracle JDK开始。然后我通过运行nix-env -i scala
通过Nix安装scala。这完成了。
但是,运行scalac
失败:
% scala
Exception in thread "main" java.lang.UnsupportedClassVersionError: scala/tools/nsc/MainGenericRunner : Unsupported major.minor version 52.0
at java.lang.ClassLoader.findBootstrapClass(Native Method)
at java.lang.ClassLoader.findBootstrapClassOrNull(ClassLoader.java:1070)
at java.lang.ClassLoader.loadClass(ClassLoader.java:414)
at java.lang.ClassLoader.loadClass(ClassLoader.java:412)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
我有JAVA_HOME设置:
% echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home
要重申,我想通过尼克斯安装斯卡拉。我想学习一种或多种方法来做到这一点。一些注意事项:
- 我很高兴详细了解Nix包是如何工作的,如果需要的话。
- 我还没有得到一个关于如何在MacOS上通过Nix安装JDK的清晰权威解释。这似乎是故事的关键部分。
首先,我卸载了scala和nix-env --uninstall scala
。
然后,我更新了我的~/.nixpkgs/config.nix
包括:
{
packageOverrides = pkgs: {
scala = pkgs.scala.override {
jre = pkgs.jre8;
};
};
}
然后我重新安装了斯卡拉与nix-env -i scala
。普雷斯托!
更新1:更改jre = pkgs.openjdk8
为jre = pkgs.jre8
。
您必须重写它的派生才能安装Scala,看起来像是一个可以报告给nixpkgs GitHub存储库的错误。 –
@ Zimmi48好点。是的,从2.12开始,Scala需要版本8的JRE或JDK(请参阅http://scala-lang.org/news/2.12-roadmap)。 –
的错误是不支持的'版本MAJOR.MINOR这52.0'意味着你JRE版本可能比你的SDK版本较低提交给美国nixpkgs的问题。您可能安装了Java 7 JRE,我会验证您是否安装了正确的版本。基本上你试图在较旧的运行时运行为java 8编译的代码。 – user1875195
@ user1875195您的评估似乎是正确的;我检查了'scala'的Nix安装脚本(一个填充程序),并将JAVA_HOME设置为OpenJDK 7.接下来,我需要弄清楚如何告诉Nix安装版本8 JDK或依赖已安装的JDK。欢迎您提供完整的答案(这些仅仅是评论,对澄清有用) –