2017-02-03 180 views
0

我想用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的清晰權威解釋。這似乎是故事的關鍵部分。
+0

的錯誤是不支持的'版本MAJOR.MINOR這52.0'意味着你JRE版本可能比你的SDK版本較低提交給美國nixpkgs的問題。您可能安裝了Java 7 JRE,我會驗證您是否安裝了正確的版本。基本上你試圖在較舊的運行時運行爲java 8編譯的代碼。 – user1875195

+0

@ user1875195您的評估似乎是正確的;我檢查了'scala'的Nix安裝腳本(一個填充程序),並將JAVA_HOME設置爲OpenJDK 7.接下來,我需要弄清楚如何告訴Nix安裝版本8 JDK或依賴已安裝的JDK。歡迎您提供完整的答案(這些僅僅是評論,對澄清有用) –

回答

2

首先,我卸載了scala和nix-env --uninstall scala

然後,我更新了我的~/.nixpkgs/config.nix包括:

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

然後我重新安裝了斯卡拉與nix-env -i scala。普雷斯托!

更新1:更改jre = pkgs.openjdk8jre = pkgs.jre8

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

+1

您必須重寫它的派生才能安裝Scala,看起來像是一個可以報告給nixpkgs GitHub存儲庫的錯誤。 –

+0

@ Zimmi48好點。是的,從2.12開始,Scala需要版本8的JRE或JDK(請參閱http://scala-lang.org/news/2.12-roadmap)。 –

相關問題