Zugang zur YAML-Library

  • Also grundsätzlich sollte es möglich sein, dass du die "snakeyaml.jar" aus dem "lib" Ordner im Spielverzeichnis einfach als Library in dein Plugin einbindest, dann kannst du auf alle Funktionen zugreifen. Du musst die Library hinterher nicht mit deinem Plugin ausliefern (da sie ja schon beim Spiel bzw. Server vorhanden ist). Ich teste nachher mal, ob das geht, aber eigentlich dürfte da nichts gegen sprechen ;)

  • Ich teste nachher mal, ob das geht, aber eigentlich dürfte da nichts gegen sprechen ;)

    Hi Red,

    hast du das schon mal getestet?


    Also ich habe mir mal YAMAL angesehen und eine Test Klasse in der Java Windows Umgebung gemacht, hier konnte ich alle versuche soweit zum laufen bringen.


    Nun versuche ich das im Plugin zunutzen, allerdings bekomme ich einen Fehler bei dem ich nicht weiter komme (google liefert 3 Chinesische Ergebinsse) hier:RW SERVER: Fatal error occurred!

    org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException: Input length = 1

    der Fehler tritt beim Laden der YAMAL auf yaml.loadAs( input, aClass ); aClass ist ein Parameter Class<?> und geladen wurde YAMAL mit Constructor constructor = new Constructor(aClass); Representer rep = new Representer(); Yaml yaml = new Yaml( constructor, rep, options ); (aus meiner Test Klasse), und mit Yaml yaml = new Yaml(new CustomClassLoaderConstructor(plugin.getServer().getClass().getClassLoader())); getestet.

    Die Datei wurde zuvor mit yaml.dump(daten,writer) erstellt, sollte also YAMAL konform sein.


    wie gesagt in einer Java-Anwendung kommt der Fehler nicht:wat:

  • Sorry, das ist leider etwas untergegangen... aber ich habe es nochmal getestet (testweise mit den Permission-Dateien des Spiels), und das Einbinden der YAML lib funktioniert wie erwartet (und muss auch nicht mit dem Plugin mit ausgeliefert werden) :)


    Der Fehler, den du bekommst, deutet darauf hin, dass der Parser Probleme mit der Codierung hat. Stelle am besten sicher, dass die Datei, die du einlesen möchtest, als UTF-8 kodiert ist. Wie liest du die Datei ein? Verwendest du Utils.FileUtils.readStringFromFile() aus der API, oder benutzt du eine eigene Funktion?

  • Danke:thumbup:


    Ich hatte einen FileInputStream() benutzt, habe jetzt auf Utils.FileUtils.readStringFromFile() umgestellt und es klappt:D


    ------


    Und ich hatte eine Klasse nicht auf Public gesetzt:drunk:

Participate now!

Don’t have an account yet? Create a new account now and be part of our community!