启动 sbt 1.5.0 时获取 NullPointerException

Get NullPointerException when starting sbt 1.5.0

当 运行 sbt 命令在任何目录(主目录
除外)上时出现以下错误 发生在手动安装或通过 sdkman 安装的 sbt 上。
发生在 open 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(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(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

谢谢 萨阿德

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

rm -fr ~/.sbt/
rm -fr ~/.ivy2/

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

删除 ~/.ivy2/ 可能有点矫枉过正 YMMV。