在MacOS Sierra上使用Nix安装Scala

时间:2017-02-03 23:18:48

标签: scala java-8 nix

我想使用Nix安装OpenJDK 8或Oracle JDK 8以及Scala。

我首先直接安装了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安装Scala。我想学习一种或多种方法。一些说明:

  • 我很高兴能够了解更多有关Nix软件包如何工作的信息。
  • 我还没有得到关于如何在macOS上通过Nix安装JDK的明确,权威的解释。这似乎是故事的关键部分。

1 个答案:

答案 0 :(得分:3)

首先,我使用nix-env --uninstall scala卸载了scala。

然后我更新了我的~/.nixpkgs/config.nix以包含:

{
  packageOverrides = pkgs: {
    scala = pkgs.scala.override { 
      jre = pkgs.jre8;
    };
  };
}

然后我用nix-env -i scala重新安装了scala。的Presto!

更新1:将jre = pkgs.openjdk8更改为jre = pkgs.jre8

更新2:我在https://github.com/NixOS/nixpkgs/issues/22439

向nixpkgs提交了一个问题