eclipse - Scala IDE : can't read XML file into scala worksheet

标签 eclipse scala

刚接触 Scala,在读取 Scala 工作表中的 XML 文件时遇到问题。到目前为止我已经:

  • 下载了Scala IDE (适用于 Windows)并将其解压缩到我的 C:\ 驱动器
  • 使用以下文件路径创建了一个 Scala 项目:C:\eclipse\workspace\xml_data
  • 使用以下 data 创建了 xml 文件 ...\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)
    }
    

但是,当我创建 Scala 工作表 test_sample_data.sc 时,它运行正常:

import sample_data.SampleData

object test {
  println(SampleData.data) 
}

我得到一个java.lang.ExceptionInInitializerError,其中包括:Caused by:java.io.FileNotFoundException:music.xml(系统找不到指定的文件)

工作空间为C:\eclipse\workspace。非常感谢任何帮助或见解。干杯!

更新:

按照 aepurniet 的建议,我运行了 new java.io.File(".").getAbsolutePath() 并分别得到了以下结果:

  • SampleData.scala:C:\eclipse\workspace\xml_data\.
  • test_sample_data.sc:C:\eclipse\.

这就是导致问题的原因。有谁知道为什么会发生这种情况?绝对文件路径解决了问题。这是最好的解决方案吗?

最佳答案

关于导致 scala 类和工作表之间的用户目录不同的原因: 您可能遇到了此处列出的 Eclipse IDE 问题
https://github.com/scala-ide/scala-worksheet/issues/102

Jfyi,我使用了 Intellij,但该问题无法重现。

关于使用绝对路径:

使用绝对路径可以很好地进行快速测试,但对于实际实现来说并不是一个好的做法。您可以考虑将路径与文件名一起作为 SampleData 的输入传递。

这里提到的一些技巧可以从 scala 工作表中获取工作区的基本路径:Configure working directory of Scala worksheet

如果这只是为了您的测试,那么破解工作表内工作区的绝对路径可能对您来说是最简单的。

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")
}

Scala 工作表:

import sample_data.SampleData

object test {
  val workDir = ... // Using the hack or hardcoding
  println(SampleData.data(workDir + "/music.xml")) 
}

关于eclipse - Scala IDE : can't read XML file into scala worksheet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21911210/

相关文章:

android - cocos2d-x 3.0 rc0 : develop for android in eclipse

java - 警告 : Unknown version string [3. 1]。将使用默认版本

java - 尝试访问外部存储 Android 时出现 FileNotFoundException

java - Eclipse 重构

具有多个键的 Java WeakHashMap?

Scala:如何在未来打印列表

eclipse - 如何以只读方式打开 Eclipse 项目?

scala - 如何以编程方式使方法可链接?

java - 如何在 jenkinsfile 中将参数传递给 sbt

xhtml - Scala xhtml 属性因问号而中断