1. ホーム
  2. java

[解決済み] ベースネームに対応するバンドルが見つかりません

2022-02-10 12:13:39

質問

jfreechart (v 1.0.9) に依存しているライブラリを使っています。

.jarを実行しようとすると、次のようになります。

java.util.MissingResourceException: Can't find bundle for base name
        org.jfree.chart.LocalizationBundle, locale en_US
    at java.util.ResourceBundle.throwMissingResourceException
        (ResourceBundle.java:1521)
    at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1260)
    at java.util.ResourceBundle.getBundle(ResourceBundle.java:962)

LocalizationBundle.propertiesファイルを作成しようとしましたが、うまくいきません。CLASSPATHをチェックしてもダメでした。

何か思い当たることはありますか?

解決方法は?

<ブロッククオート
java.util.MissingResourceException: Can't find bundle for base name
    org.jfree.chart.LocalizationBundle, ロケール en_US

要は、クラスパスに以下のどちらかのファイルが必要であることが、例外メッセージに詳しく書かれているのです。

/org/jfree/chart/LocalizationBundle.properties

または

/org/jfree/chart/LocalizationBundle_ja.properties

または

/org/jfree/chart/LocalizationBundle_ja_US.properties

以下もご参照ください。 resourcebundlesについての公式Javaチュートリアル をご覧ください。

しかし、これは実際にはサードパーティのマネージドプロパティファイルなので、自分で作成するべきではありません。それは、JFreeChart JAR ファイルで既に利用可能であるべきです。従って、実行時にクラスパスで利用可能であることを確認してください。また、正しいバージョンを使用していること、パッケージツリー内のプロパティファイルの位置も確認します。 かもしれない は、JFreeChart のバージョンごとに変更されています。

JARファイルを実行する際に -cp 引数でクラスパスを指定します。例.

java -jar -cp c:/path/to/jfreechart.jar yourfile.jar

また、クラスパスの指定は class-path のエントリは、JAR のマニフェスト・ファイル内にあります。そこでは、JAR ファイル自体からの相対パスを使用することができます。実行 ではなく を使用します。 %CLASSPATH% 環境変数を使用する場合、それは 無視 で実行されない JAR やその他すべてのものによって実行されます。 java.exe なし -cp , -classpath-jar の引数を指定します。