libGDX无法从Gdx.files.internal读取文件

时间:2018-02-13 16:16:53

标签: android scala libgdx

我的libGDX项目有点问题。在课堂上(高中时,不要想太多),我们必须做一个刽子手游戏。和我的一些朋友一起,我们开始在Scala中制作它。嗯,它有效,有点。 但问题是我无法读取生成单词的文件。它是一个yaml文件(words.yml),位于android子项目的资产中。它被打包在.jar文件中,我检查了它,但是当我尝试使用Gdx.files.internal读取它时,它会停止并显示NullPointerException。这让我烦恼,因为我能够读取图像文件。我认为不可能从核心项目的主文件中使用Gdx.files.internal来读取。但这似乎并非如此,因为如果我把它放在那个文件中它也会崩溃。

死亡的领域:

context.clearRect(0,0,cw,ch);

错误消息:

private val map: (Int, Array[String]) = {
    val yaml: Yaml = new Yaml //using the snakeyaml library

    //Debug
    println("DBG")
    println(Gdx.files.local("words.yml").path()) //<-------It crashes here
    println("more DBG")

    val tmp: util.LinkedHashMap[String, Any] = yaml.load(
        scala.io.Source.fromFile(Gdx.files.internal("words.yml").file()) mkString) 
       //^^^^^or here if I remove the debug part^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    (tmp.get("wordCount").asInstanceOf[Int],
    tmp.get("words").toString.replaceAll("[\\[\\]]","").split(",")
        .map((s: String) => {
            if(s(0) == ' ') s.substring(1)
            else s
        }))
}

文件结构:

Exception in thread "main" java.lang.ExceptionInInitializerError
    at com.infosoftcorp.wordpress.ish.Save.<init>(Save.scala:7)
    at com.infosoftcorp.wordpress.ish.InfoSoftHangman.<init>(InfoSoftHangman.scala:35)
    at com.infosoftcorp.wordpress.ish.desktop.DesktopLauncher.main(DesktopLauncher.java:17)
Caused by: java.lang.NullPointerException
    at com.infosoftcorp.wordpress.ish.FileHandler$.<init>(FileHandler.scala:25)
    at com.infosoftcorp.wordpress.ish.FileHandler$.<clinit>(FileHandler.scala)
... 3 more

I added the working directory for the desktop sub-project

1 个答案:

答案 0 :(得分:0)

所以我真的很蠢。 初始化新的Save时,它不会在create()函数内调用,但在它之前

好吧,有时我做的很蠢。 很抱歉因为我没有发布代码而无法回答您无法回答的愚蠢问题。