启动sbt 1.5.0时获取NullPointerException

启动sbt 1.5.0时获取NullPointerException,sbt,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.XMa

在除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
$sbt
java.lang.RuntimeException:java.lang.reflect.InvocationTargetException
位于sbt.internal.XMainConfiguration.makeConfiguration(XMainConfiguration.java:102)
运行(XMainConfiguration.java:45)
在sbt.xMain.run(Main.scala:46)
在xsbt.boot.Launch$.$anonfun$run$1(Launch.scala:149)
在xsbt.boot.Launch$.withContextLoader(Launch.scala:176)
在xsbt.boot.Launch$.run(Launch.scala:149)
在xsbt.boot.Launch$.$anonfun$apply$1(Launch.scala:44)
在xsbt.boot.Launch$.Launch(Launch.scala:159)
在xsbt.boot.Launch$.apply(Launch.scala:44)
在xsbt.boot.Launch$.apply(Launch.scala:21)
在xsbt.boot.boot$.runImpl处(boot.scala:78)
在xsbt.boot.boot$.run(boot.scala:73)
在xsbt.boot.boot$.main处(boot.scala:21)
位于xsbt.boot.boot.main(boot.scala)
原因:java.lang.reflect.InvocationTargetException
位于java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(本机方法)
位于java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
位于java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
位于java.base/java.lang.reflect.Method.invoke(Method.java:566)
位于sbt.internal.XMainConfiguration.makeConfiguration(XMainConfiguration.java:84)
... 还有13个
原因:java.lang.NullPointerException
位于java.base/java.util.ArrayDeque.addLast(ArrayDeque.java:304)
位于java.base/java.util.ArrayDeque.add(ArrayDeque.java:495)
位于java.base/jdk.internal.loader.URLClassPath.(URLClassPath.java:154)
位于java.base/jdk.internal.loader.URLClassPath.(URLClassPath.java:171)
位于java.base/java.net.URLClassLoader(URLClassLoader.java:120)
位于sbt.internal.SbtInterfaceLoader。(SbtInterfaceLoader.java:16)
位于sbt.internal.MetaBuildLoader.makeLoader(MetaBuildLoader.java:143)
... 还有18个
sbt启动程序期间的[error][launcher]错误:java.lang.RuntimeException:
java.lang.reflect.InvocationTargetException
谢谢
Saad清理缓存确实解决了这个问题

rm -fr ~/.sbt/
rm -fr ~/.ivy2/
我在使用SDKMan运行各种版本的JDK的macOS上遇到了同样的问题


删除~/.ivy2/可能会过度杀灭YMMV。

删除~/.sbt后是的,它修复了问题,谢谢。