我在Spring工具套件中有一个Spring Boot项目,该项目连接到Google Cloud Spanner数据库。用于连接到Spanner的凭据位于JSON文件中,该文件已作为“环境”变量包含在“运行”配置中。

运行应用程序时,出现以下错误,应用程序终止。

Failed to instantiate [com.google.cloud.spanner.SpannerOptions]:Factory method 'spannerOptions' threw exception; nested exception is java.lang.NoSuchMethodError: org.json.JSONTokener.<init>(Ljava/io/InputStream;)

我还有另一个连接到Spanner的项目,它的工作原理绝对不错。
我正在使用Java 8

请帮助我理解此错误的原因。

最佳答案

从错误消息来看,您的依赖关系树中似乎存在冲突。您的一个或某些依赖项依赖于org.json.JSONTokener的不兼容版本,该版本不具有接受InputStream作为参数的构造函数。

您可以尝试做的一件事是比较工作项目与该项目的依赖关系。如果您将logback用作记录器,则可以启用packaging data来打印出正在使用的jar文件,以便您确切地知道引起该问题的库。知道是什么库导致问题后,您可以升级该库的版本(注意:有时它是可传递的,因此您必须升级带来此有问题的程序包的库)。

07-28 13:20