LINUX.ORG.RU

частичное чтение .properties

 


0

1

Столкнулся с тем, что такой код на java читает выборочно читает данные из .properties

import java.util.Locale;
import java.util.ResourceBundle;

class InternationalisationTest{
  public static void main(String[] args){
    Locale locale = new Locale("", "");
    ResourceBundle rb = ResourceBundle.getBundle("translate1", locale);

    System.out.println(rb.getString("deliverynote")); //отрабатывает нормально
    System.out.println(rb.getBundle("shippingdate"));//а тут валится
  }
}
Код нормально компилируется, но в рантайме получаем такое:
Delivery note 
Exception in thread "main" java.util.MissingResourceException: Can't find bundle for base name shippingdate, locale ru_UA
	at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:1539)
	at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1278)
	at java.util.ResourceBundle.getBundle(ResourceBundle.java:733)
	at InternationalisationTest.main(InternationalisationTest.java:15)
Сам .proprties-файл:
#Test international resource
deliverynote = Delivery note 
shippingdate = Shipping date
numberofplaces = Number of places
supplier = Supplier
address = Address 
usreou = USREOU
В чем может быть дело?

★★★★

Просто не задавать параметр locale пробовали?

vertexua ★★★★★
()
Ответ на: комментарий от vertexua

Просто не задавать параметр locale пробовали?

Те же яйца

Оно просто ищет translate1_ru_UA.properties

1) Согласно документации, при отсутствии translate1_ru_UA.properties оно должно использовать translate1.properties
2) пробовал подсунуть translate1_ru_UA.properties с тем же результатом. Непонятно почему deliverynote из translate1.properties оно нормально хавает, а shippingdate, из того же файла - нет

Можешь попробовать скомпилировать и запустить пример?

cab ★★★★
() автор топика
Последнее исправление: cab (всего исправлений: 1)
Ответ на: комментарий от solovey

В примере на переполненном стеке не находится файл. У меня он находится, но весь не читается.

cab ★★★★
() автор топика

У меня это делается так:

URL url = ClassLoader.getSystemResource("config.properties");
Properties properties = new Properties();
properties.load(url.openStream());

filepath = properties.getProperty("some_property");
Все работает.

kovrik ★★★★★
()

А с ResourceBundle'м так:

ResourceBundle rb = ResourceBundle.getBundle("com.blablabla.Resource", Locale.ENGLISH)
Файл называется - Resource_en_US.properties

kovrik ★★★★★
()

Нашел причину:

System.out.println(rb.getString("deliverynote")); //отрабатывает нормально
System.out.println(rb.getBundle("shippingdate"));//а тут валится
//                    ^^^^^^^^^ надо getString("shippingdate")
Вот что бывает, если тебе помогает IDE

Всем спасибо

cab ★★★★
() автор топика
Последнее исправление: cab (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.