问题描述
我正在尝试使用 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-REPL 的 Magic Imports。您将能够使用 import $ivy
导入 Maven 依赖项。
Scala 2.12 带有 scala-xml
,只要您使用 sbt console
运行 REPL,而不是您的原生 Scala REPL(已经是 @ Scala 2.13),您就可以删除该依赖项。否则,您也可以将 SBT 项目切换到 Scala 2.13。