1

私は以下に示すようなJavaプログラムを持っています:

package com.abc.myproject;

import java.util.*;

class test {
    public static void main(String[] args) 
    {
        ResourceBundle rb = ResourceBundle.getBundle("mybundle");
        String propertyValue = rb.getString("name");
        System.out.println("propertyValue="+propertyValue);
    }
}

このプログラムはC:\ tests \ code \ src \ com \ abc \ myproject \ test.javaにあり、mybundle.propertiesはC:\ tests\codeフォルダーにあります。

mybundle.propertiesには次の1行が含まれています。

name=Mike

以下に示すようにコマンドプロンプトからプログラムを実行すると、完全に正常に実行されます。

C:\testing\code\src>java -cp .;c:\testing\code com.abc.myproject.test
propertyValue=Mike

ここで、test.classのみを含むJarファイルxyz.jarを作成し、このJarをC:\testsディレクトリに保持しました。jarのマニフェストには以下が含まれます。

Manifest-Version: 1.0
Created-By: 1.7.0_05 (Oracle Corporation)
Main-Class: com.abc.myproject.test

同じディレクトリC:\ testsで、mybundle.propertiesを保持してから、以下のコマンドでjarを実行しようとしました。

java -cp .;c:\testing -jar xyz.jar

しかし、mybundleリソースのロードに失敗し、エラーがスローされます。

Exception in thread "main" java.util.MissingResourceException: Can't find bundle
 for base name scheduler, 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 com.abc.myproject.test.main(test.java:8)

Jarを再デプロイしなくてもこのファイルに変更を加えることができるはずなので、mybundle.propertiesをJarの外に置いておく必要があります。

誰かがこの問題を修正するのを手伝ってくれますか?

ありがとう!

4

1 に答える 1

3

java-cp。;c:\ tests -jar xyz.jar

を使用する場合、クラスパスに追加することはできません-jar。$ CLASSPATH-cpは無視され、jarマニフェストのクラスパスのみを使用します。

あなたができることはこのようにあなたのクラスを実行することです:

java-cp。;c:\ tests; xyz.jar com.abc.myproject.test

于 2012-07-19T07:15:18.273 に答える