XML.loadFile() 上的 NullPointerException

问题描述

我正在尝试使用 scala-xml_2.12-1.0.6.jar 加载一个 xml 文件,但它在加载时给了我 NullPointerEexception

以下是我加载xml的代码行

import scala.xml.XML
val xml = XML.loadFile("sample.xml")

我已经反编译了这个 jar 并且方法存在于那个 jar 中,但是由于某些原因它无法在代码中找到它。

我的系统上有 Scala 2.13.1 但对于这个项目我使用的是 scala 2.12.1 并且它在 mu built.sbt 中提到

scalaVersion := "2.12.1"

我的 built.sbt 中对这个 xml 包有以下依赖

libraryDependencies += "org.scala-lang.modules" %% "scala-xml" % "1.0.6"

如果我将相同的代码复制并粘贴到 Scala 交互式 shell( scala 2.13.1) 中,我会收到以下错误

import scala.xml.XML
                ^
   error: object xml is not a member of package scala
   did you mean Nil?

谁能指出我做错了什么?

提前致谢。

解决方法

我不确定您如何加载 Scala REPL,但如 "How to use third party libraries with Scala REPL?" 中所述,您应该使用 sbt console 从 SBT 启动 REPL。您的 .sbt 文件也需要在范围内。

Scala REPL 独立不处理 .sbt 文件。它们是两种不同的工具。

或者,您也可以安装支持 Ammonite-REPLMagic Imports。您将能够使用 import $ivy 导入 Maven 依赖项。

Scala 2.12 带有 scala-xml,只要您使用 sbt console 运行 REPL,而不是您的原生 Scala REPL(已经是 @ Scala 2.13),您就可以删除该依赖项。否则,您也可以将 SBT 项目切换到 Scala 2.13。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...