Scala新手,XML在Scala工作表中读取文件时遇到问题.到目前为止,我有:
C:\驱动器中C:\eclipse\workspace\xml_dataxml文件...\xml_data\music.xml创建了一个包sample_data并创建了以下对象(带有文件路径:) ...\xml_data\src\sample_data\SampleData.scala:
package sample_data
import scala.xml.XML
object SampleData {
val data = XML.loadFile("music.xml")
}
object PrintSampleData extends Application {
println(SampleData.data)
}
Run Code Online (Sandbox Code Playgroud)但是,当我创建Scala工作表时,这运行正常test_sample_data.sc:
import sample_data.SampleData
object test {
println(SampleData.data)
}
Run Code Online (Sandbox Code Playgroud)
我得到的java.lang.ExceptionInInitializerError包括:Caused by: java.io.FileNotFoundException: music.xml (The system cannot find the file specified).
工作区是C:\eclipse\workspace.任何帮助或见解非常感谢.干杯!
更新:
按照aepurniet的建议,我跑了new java.io.File(".").getAbsolutePath()并分别获得了以下内容:
SampleData.scala: C:\eclipse\workspace\xml_data\.test_sample_data.sc: C:\eclipse\.所以这就是导致问题的原因.有谁知道为什么会这样?绝对文件路径可以解决问题.这是最好的解决方案吗?
小智 7
关于scala类和工作表之间导致不同用户目录的原因:
您可能遇到此处列出的Eclipse IDE问题
https://github.com/scala-ide/scala-worksheet/issues/102
Jfyi,我使用了Intellij,这个问题在那里是不可复制的.
关于使用绝对路径:
使用绝对路径可以很好地进行快速测试,但对于实际实现来说不是一个好习惯.您可以考虑将路径和文件名作为输入传递给SampleData.
这里提到的一些黑客从scala工作表中获取工作空间的基本路径:配置Scala工作表的工作目录
如果这只是为了您的测试,那么在工作表中破解工作空间的绝对路径对您来说可能是最简单的.
SampleData.scala
package sample_data
import scala.xml.XML
object SampleData {
def data(filename: String) = XML.loadFile(filename)
}
object PrintSampleData extends Application {
println(SampleData.data(System.getProperty("user.dir") + "/music.xml")
}
Run Code Online (Sandbox Code Playgroud)
Scala工作表:
import sample_data.SampleData
object test {
val workDir = ... // Using the hack or hardcoding
println(SampleData.data(workDir + "/music.xml"))
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1466 次 |
| 最近记录: |