启动 sbt 1.5.0 时出现 NullPointerException

saa*_*aad 3 sbt

在任何目录(除了 homedir)上运行 sbt 命令时出现以下错误
手动或通过 sdkman 安装的 sbt 会发生这种情况。
发生在开放 jdk 11 和 16 上

$ sbt
java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at sbt.internal.XMainConfiguration.makeConfiguration(XMainConfiguration.java:102)
at sbt.internal.XMainConfiguration.run(XMainConfiguration.java:45)
at sbt.xMain.run(Main.scala:46)
at xsbt.boot.Launch$.$anonfun$run$1(Launch.scala:149)
at xsbt.boot.Launch$.withContextLoader(Launch.scala:176)
at xsbt.boot.Launch$.run(Launch.scala:149)
at xsbt.boot.Launch$.$anonfun$apply$1(Launch.scala:44)
at xsbt.boot.Launch$.launch(Launch.scala:159)
at xsbt.boot.Launch$.apply(Launch.scala:44)
at xsbt.boot.Launch$.apply(Launch.scala:21)
at xsbt.boot.Boot$.runImpl(Boot.scala:78)
at xsbt.boot.Boot$.run(Boot.scala:73)
at xsbt.boot.Boot$.main(Boot.scala:21)
at xsbt.boot.Boot.main(Boot.scala)
Caused by: java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at sbt.internal.XMainConfiguration.makeConfiguration(XMainConfiguration.java:84)
... 13 more
Caused by: java.lang.NullPointerException
at java.base/java.util.ArrayDeque.addLast(ArrayDeque.java:304)
at java.base/java.util.ArrayDeque.add(ArrayDeque.java:495)
at java.base/jdk.internal.loader.URLClassPath.<init>(URLClassPath.java:154)
at java.base/jdk.internal.loader.URLClassPath.<init>(URLClassPath.java:171)
at java.base/java.net.URLClassLoader.<init>(URLClassLoader.java:120)
at sbt.internal.SbtInterfaceLoader.<init>(SbtInterfaceLoader.java:16)
at sbt.internal.MetaBuildLoader.makeLoader(MetaBuildLoader.java:143)
... 18 more
[error] [launcher] error during sbt launcher: java.lang.RuntimeException: 
java.lang.reflect.InvocationTargetException
Run Code Online (Sandbox Code Playgroud)

谢谢萨阿德

小智 5

清理缓存确实解决了这个问题。

rm -fr ~/.sbt/
rm -fr ~/.ivy2/
Run Code Online (Sandbox Code Playgroud)

我在使用 SDKMan 运行各种版本的 JDK 的 macOS 上遇到了同样的问题。

删除~/.ivy2/可能有点过分了 YMMV。

  • 是的,删除 ~/.sbt 后它解决了问题,谢谢。 (3认同)