Sooo, nachdem ich jetzt doch eine ganze Weile ohne Forum überlebt habe, stecke ich nun wieder ziemlich ratlos fest. Ich bastel gerade an einer Spielidee herum, wo es unter anderem möglich sein soll, eine eigene "Ära" mit eigenen Einheiten, Gebäuden, etc. zu erstellen und diese ins Spiel zu laden.
Sinnvollerweise sollten für diese dann auch Übersetzungsdateien geladen werden können. Und da scheitert es gerade. So lange die Datei
sich im Eclipse-Ordner befindet, klappt es wunderbar.
Sobald ich es aber in einen eigenen Ordner exportiere und es über einen URLClassLoader laden will, findet es nichts mehr. :noe:
hier wird der ClassLoader erstellt:
in der Klasse Era gibt es:
(DummyEra ist eine Unterklasse von Era, die im externen Ordner liegt)
Die Ausgabe gibt dann:
Sinnvollerweise sollten für diese dann auch Übersetzungsdateien geladen werden können. Und da scheitert es gerade. So lange die Datei
Code:
C:\Users\<user>\Desktop\[B]erawars.jar\lang2\DummyEra_de_DE.properties[/B]
Sobald ich es aber in einen eigenen Ordner exportiere und es über einen URLClassLoader laden will, findet es nichts mehr. :noe:
hier wird der ClassLoader erstellt:
Java:
Era era = null;
try (URLClassLoader loader = new URLClassLoader(
new URL [] {new URL("file:C:\\Users\\<user>\\Desktop\\erawars.jar")})) {
era = (Era) loader.loadClass("dummy.DummyEra").newInstance();
}
in der Klasse Era gibt es:
Java:
public String getNameOf(EntityType type, Locale locale) {
System.out.println(type.getKey());
System.out.println(getClass().getName());
System.out.println(getClass().getClassLoader());
System.out.println(((URLClassLoader) getClass().getClassLoader()).getURLs()[0]);
System.out.println(getLangFolder() + "/" + this.getKey());
return ResourceBundle.getBundle(getLangFolder() + "/" + this.getKey(),
locale, this.getClass().getClassLoader()).getString("name." + type.getKey());
}
(DummyEra ist eine Unterklasse von Era, die im externen Ordner liegt)
Die Ausgabe gibt dann:
Code:
dummy-unit
dummy.DummyEra
java.net.URLClassLoader@6e52e8ed
file:C:/Users/<user>/Desktop/erawars.jar
lang2/DummyEra
java.util.MissingResourceException: Can't find bundle for base name lang2/DummyEra, locale de_DE
at java.util.ResourceBundle.throwMissingResourceException(Unknown Source)
at java.util.ResourceBundle.getBundleImpl(Unknown Source)
at java.util.ResourceBundle.getBundle(Unknown Source)
at era.Era.getNameOf(Era.java:78)
...