Я тестирую i18n функции Java и имею проблему, я не могу загрузить файл языка, когда это не находится в корне класса. Прямо сейчас мои файлы находятся в /lang
каталог.
Посмотревший несколько ответов здесь в Так, помещая его в a classes
subdir и загрузка его как lang.Messages
, используемая полная маршрутизация местоположения /Test/lang/Message
(тест является названием проекта), с помощью просто /lang/Message
и тем не менее я добираюсь:
java.util.MissingResourceException: Can't find bundle for base name
ошибка.
Что-либо еще для попытки?
Моя файловая структура:
Test/lang/Messages_es.properties
Test/src/test/Main.java
import java.util.Locale;
import java.util.ResourceBundle;
import javax.swing.JFrame;
public class Main {
public static void main(String[] args) {
Locale currentLocale;
ResourceBundle messages;
currentLocale = new Locale("es");
messages = ResourceBundle.getBundle("Messages", currentLocale);
System.out.println(messages.getString("Messagesgreetings"));
System.out.println(messages.getString("Messagesinquiry"));
System.out.println(messages.getString("Messagesfarewell"));
}
}
В имени файла свойств необходимо указать название вашей локали.
Переименуйте файл свойств в Messages_es.properties
Поскольку вы не объявили ни одного пакета, как ваш скомпилированный файл класса, так и файл свойств могут находиться в одном корневом каталоге.
ИЗМЕНИТЬ в ответ на комментарии:
Допустим, у вас есть такая структура проекта:
test \ src \ foo \ Main.java
( foo
- имя пакета)
test\bin\foo\Main.class
test \ bin \ resources \ Messages_es.properties
(файл свойств находится в папке resources
в вашем пути к классам)
Вы можете запустить это с помощью:
c:\test>java -classpath .\bin foo.Main
Обновленный исходный код:
package foo;
import java.util.Locale;
import java.util.ResourceBundle;
import javax.swing.JFrame;
public class Main {
public static void main(String[] args) {
Locale currentLocale;
ResourceBundle messages;
currentLocale = new Locale("es");
messages = ResourceBundle.getBundle("resources.Messages", currentLocale);
System.out.println(messages.getString("Messagesgreetings"));
System.out.println(messages.getString("Messagesinquiry"));
System.out.println(messages.getString("Messagesfarewell"));
}
}
Как видите, мы загружаем файл свойств с именем «resources.Messages»
. Надеюсь, это поможет.