java.util. MissingResourceException: не Может найти пакет для базового имени

Я тестирую 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"));
    }
}
8
задан BuZZ-dEE 7 June 2015 в 18:30
поделиться

1 ответ

В имени файла свойств необходимо указать название вашей локали.

Переименуйте файл свойств в 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»

. Надеюсь, это поможет.

8
ответ дан 5 December 2019 в 20:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: