Während des Studiums von Java Gold wollte ich die Externalisierung von Informationen und verschiedenen Eigenschaftendateien mithilfe von Beispielcode verstehen. Deshalb habe ich den Code in einer integrierten Entwicklungsumgebung geschrieben und ausgeführt.
Egal wie viel ich versuche, ich erhalte eine MissingResoueceException.
Warum….
Als Ergebnis von Versuch und Irrtum, während ich auf den Laufzeitfehler schaute, konnte ich die zu beachtenden Punkte kennen. Das Folgende ist ein Memorandum.
MyResource.java
package com.example.Locale.properties;
import java.util.ListResourceBundle;
public class MyResource extends ListResourceBundle{
private final static String resources[][] = {
{"helloworld", "Hello, World!"},
{"key","This is MyResource's key!"}
};
@Override
protected Object[][] getContents() {
return resources;
}
}
Ich möchte den im obigen Code beschriebenen "Schlüssel" in der Ausführungsklasse erhalten.
Da ListResourceBundle eine abstrakte Klasse ist, ist es außerdem wichtig, die abstrakte Methode "getContents" zu implementieren.
Angenommen, der folgende Beispielcode wird angezeigt.
ResourceBundle rb = ResourceBundle.getBundle("MyResource");
Ich konnte es jedoch nicht gut machen.
Als Ergebnis einer kurzen einstündigen Untersuchung verwendete Kuromoto das Studium (Gründliche Erfassung der Java SE 8 Gold-Problemsammlung). % E6% 94% BB% E7% 95% A5-Java-Gold-% E5% 95% 8F% E9% A1% 8C% E9% 9B% 86-1Z0-809 / dp / 4295000035 / ref = asc_df_4295000035 /? = jpo-22 & linkCode = df0 & hvadid = 288845875882 & hvpos = 1o1 & hvnetw = g & hvrand = 1789597220371198337 & hvpone = & hvptwo = & hvqmt = / hvdev = c & hvdvcmdl = & hvlocph = Es war.
[Achtung] Wenn die Ressourcenpaketklasse ** im Paket enthalten ist **, vergessen Sie nicht, sie mit dem Paketnamen zu qualifizieren.
Das heißt, der in getBundle zu beschreibende Name musste ein vollständig qualifizierter Name sein, einschließlich des Paketnamens.
Im obigen Code musste sich die MyResource-Klasse im Standardpaket befinden. Da es jedoch tatsächlich im Paket definiert wurde, müssen Sie die Datei verschieben oder in Klammern mit einem vollständig qualifizierten Namen schreiben.
Im Folgenden wird ein Teil der Ausführungsklasse aufgeführt, der mit dem vollständig qualifizierten Namen und dem Ausführungsergebnis beschrieben wird.
Main.java
//Beschreiben Sie den Namen der Ressourcenklasse als vollständig qualifizierten Namen.
ResourceBundle rb = ResourceBundle.getBundle("com.example.Locale.properties.MyResource");
String message = rb.getString("key");
System.out.println(message);
This is MyResource's key!
Da ich aufgrund körperlicher und geistiger Probleme nicht vor Ort arbeite, kann der Inhalt falsch oder altmodisch sein. Wenn ich es jedoch in Zukunft bemerke oder herausfinde, werde ich es als Memorandum aufschreiben. Ich würde gerne kommen.
Ich wäre Ihnen dankbar, wenn Sie zu tatsächlichen Erfahrungen oder Vorschlägen Stellung nehmen könnten.
Danke fürs Lesen.
Recommended Posts