我试图运行一个Scala程序,其中Java 16存在错误。我的同事使用的是Java 15,一切正常。当我在终端输入java -version
时,它显示我正在使用Java 15。但是,当我运行sbt run -v
时,它说它正在使用Java 16,因此程序会抛出错误。
我看到有人谈论这个sbt-extra
的东西,但是没有太多关于如何使用它的解释。我甚至没有在我的Mac上安装Java 16,所以我真的很困惑为什么SBT会这样说。
export JAVA_HOME=/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home
build.sbt
来处理每个sbt项目:https://dev59.com/VMHqa4cB1Zd3GeqPwEaK#76456295。build.sbt
文件来完成,这样它只针对该项目而不是整个本地环境。即在build.sbt
中添加以下内容: javacOptions ++= Seq("-source", "11", "-target", "11")
git clone https://github.com/jenv/jenv.git ~/.jenv
echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(jenv init -)"' >> ~/.bash_profile
接下来,您可以添加已安装的JVM。在Mac上,如果您通过brew安装了它们,您可以在以下位置找到它们:/Library/Java/JavaVirtualMachines。
然后将它们添加到jenv中:
jenv add /Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home
jenv add /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
you can set the default jvm with the command:
jenv global 1.8.0.121
然后,在您的某些项目中执行sbt,您应该看到jvm作为sbt正在使用的jvm。
export PATH="usr/local/opt/openjdk@11/bin:$PATH"
注意 - 我使用的openjdk路径只是homebrew符号链接到实际java安装的路径,该路径位于/Library/Java/JavaVirtualMachines。你可能可以直接使用那个实际路径,但我没有测试过。
sbt
应该只使用JAVA_HOME
上已有的内容。如果您确定没有安装 Java 16,那么它不应该使用它,因为sbt
不会下载 JDKs。 - Luis Miguel Mejía Suárezwhich java
。 您可以设置JAVA_HOME
或使用sbt -java-home <path/to/jdk>
来使用特定的JDK。 - sarveshseri