Javaでリソースバンドルの使い方の練習をしたいのですが、エラーの原因がどうしてもわかりません。
エラー発生場所は、メインの
ResourceBundle rb = ResourceBundle.getBundle("dai5syo.Resources", locale);
この行です。
"dai5syo.Resources"が見つからないというエラーのようなのですが、どこがおかしいのでしょうか?
lang
1package dai5syo; 2 3import java.util.ListResourceBundle; 4import java.util.Locale; 5import java.util.ResourceBundle; 6 7public class Practice4 { 8 9 static Locale defalt = Locale.getDefault(); 10 static Locale us = new Locale("en", "US"); 11 static Locale[] ary = { defalt, us }; 12 13 public static void main(String a[]) { 14 for (Locale locale : ary) { 15 System.out.println(locale.getLanguage() + " " + locale.getCountry()); 16 ResourceBundle rb = ResourceBundle.getBundle("dai5syo.Resources", locale); 17 System.out.println(rb.getString("send")); 18 System.out.println("===================="); 19 } 20 } 21} 22 23class Resources extends ListResourceBundle { 24 @Override 25 protected Object[][] getContents() { 26 Object[][] contents = { 27 { "send", "送信" }, 28 { "cancel", "取り消し" } 29 }; 30 return contents; 31 } 32} 33 34class Resources_en_US extends ListResourceBundle { 35 @Override 36 protected Object[][] getContents() { 37 Object[][] contents = { 38 { "send", "send" }, 39 { "cancel", "cancel" } 40 }; 41 return contents; 42 } 43} 44
コンソール画面には以下ような実行結果が表示されています。
ja JP
Exception in thread "main" java.util.MissingResourceException: Can't find bundle for base name dai5syo.Resources, locale ja_JP
at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:1564)
at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1387)
at java.util.ResourceBundle.getBundle(ResourceBundle.java:845)
at dai5syo.Practice4.main(Practice4.java:16)
Caused by: java.lang.IllegalAccessException: Class java.util.ResourceBundle$Control can not access a member of class dai5syo.Resources with modifiers ""
at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:101)
at java.lang.Class.newInstance(Class.java:427)
at java.util.ResourceBundle$Control.newBundle(ResourceBundle.java:2645)
at java.util.ResourceBundle.loadBundle(ResourceBundle.java:1501)
at java.util.ResourceBundle.findBundle(ResourceBundle.java:1465)
at java.util.ResourceBundle.findBundle(ResourceBundle.java:1419)
at java.util.ResourceBundle.findBundle(ResourceBundle.java:1419)
at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1361)
... 2 more
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/09/10 09:29