3

resourcebundleエラーについては、同じテーマに関する他の質問を読んだことがありますが、賢明なことは何もありませんでした。別のことを試しましたが、役に立ちません。少し背景を説明します。私は小さなアプリ(JDK6)を開発しました。このアプリは、フラットなファイルの解析と編集を自動的に行います。アプリは、プロパティファイルからいくつかのデータを読み取ることから始まります。

重要:プロパティファイルを変更できるようにしたい。jarファイルに入れたくありません。

ただし、別の質問/回答に基づいて、私が作成しようとした小さなサンプルアプリでも、[ここ] [1]:

package restestapp;

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


public class ResourceBundleTester
{
    public static void main(String[] args)
    {
        Locale locale = Locale.getDefault();
        String basename ="myresource";
        ResourceBundle resourceBundle = ResourceBundle.getBundle(basename, locale);
        System.out.println(resourceBundle.getString("STARTING_MYAPP"));
    }
}

両方のファイルはここにあります:

/home/dakoina/Documents/ResTestapp/ResTestApp.jar
/home/dakoina/Documents/ResTestapp/myresource.properties

あるいは

c:/temp/ResTestApp.jar
c:/temp/myresource.properties

しかし、実行すると、次の出力が得られます。

dakoina@ubuntu:~/Documents/ResTestapp$ java -cp /home/dakoina/Documents/ResTestapp/ -jar "ResTestApp.jar"
Exception in thread "main" java.util.MissingResourceException: Can't find bundle for base name myresource, locale en_US
    at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:1539)
    at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1278)
    at java.util.ResourceBundle.getBundle(ResourceBundle.java:805)
    at restestapp.ResTestApp.main(ResTestApp.java:19)

そしてWindowsでも同じ...

c:\temp>java -jar ResTestApp.jar
Exception in thread "main" java.util.MissingResourceException: Can't find bundle
 for base name myresource, locale en_US
        at java.util.ResourceBundle.throwMissingResourceException(Unknown Source)
        at java.util.ResourceBundle.getBundleImpl(Unknown Source)
        at java.util.ResourceBundle.getBundle(Unknown Source)
        at restestapp.ResTestApp.main(ResTestApp.java:19)
  [1]: http://stackoverflow.com/questions/3742158/using-resourcebundle-with-an-external-file-java

どこが間違っているのかわからない:/

4

2 に答える 2

4

-jar意味:指定されたjarと、マニフェストで参照するすべてのjarからクラスパスを作成します。したがって、この-cpオプションは無視されます。

コマンドラインは次のようになります。

java -cp /home/dakoina/Documents/ResTestapp;/home/dakoina/Documents/ResTestapp/ResTestApp.jar the.main.Class

とはいえ、リソースバンドルは、国際化されたラベルをロードするために使用されます。プロパティを読みたいだけの場合は、java.util.Propertiesクラスを使用することをお勧めします。

于 2012-07-26T10:52:12.377 に答える
2

myresource.properties jarファイルのクラスパスに含まれている必要があります

このプロパティファイルをjarに入れ、クラスパスを構成します(リンクで説明されているように)

于 2012-07-26T10:49:14.753 に答える