2012-04-26 15 views
0

私はデスクトップの簡単なアプリケーションを持っています。アプリケーションには他のアプリケーションのMyApp.jarという.jarがあり、このjarには1つのキー(infor.properties)を持つプロパティファイルがあります。アプリケーションは独自のMyApp.jarを生成する必要があります。プロパティファイルのキーはinputTextのStringであるため、queプロパティファイルを変更する必要があります。私の問題は、新しい.jarを生成するときに、このjarがプロパティファイルを見つけられないということです。私はinfor.propertiesのコンテンツ取得のためにこれを使用します。.jarに追加されたプロパティが見つかりません。

InputStream in = this.getClass().getClassLoader().getResourceAsStream("infor.properties"); 
Properties prop = new Properties(); 
prop.load(in); 
in.close(); 

私は新しいの.jarにコピーするために、すべてのファイルをZIPファイルとZipOutputStreamを使用して、新しいを追加します。ファイルの新しい構造は新しい.jarが正しいのですが、新しいjarを実行すると、ファイルinfor.propertiesが見つかりません。なぜ誰が知っていますか?

+0

本当にinfor.propertiesはjarファイルにありますか?それを名前を変更して見た目を変えるトレイ。 –

+0

はい、瓶に入っています。 – Ina

+0

どのようにjarファイルを生成しますか?あなたはいくつかのIDEを使用していますか?あるいは 'jar'ユーティリティを使用しますか? –

答えて

1

これは、ファイルがjarファイルのどこにあり、クラスパスをどのように指定するかによって異なります。

は、あなたがパッケージtestapp(クラスの完全な名前でクラスTestを考えてみましょうtestapp.TestがFOREです:私はあなたがうまくいけば、あなたのプロジェクトに適用することができ、このサンプルを作成しましたので残念ながら、あなたは、など、あなたの構造に私たちに多くの情報を与えていません):

package testapp; 

import java.io.FileInputStream; 
import java.io.IOException; 
import java.util.Properties; 
import java.util.logging.Level; 
import java.util.logging.Logger; 

public class Test { 

    private static final Logger logger = Logger.getLogger(Test.class.getName()); 

    public static void main(String[] args) { 

      Properties properties = new Properties(); 
      try { 
       properties.load(new FileInputStream("testapp/infor.properties")); 
       System.out.println("" + properties.getProperty("a")); 
      } catch (IOException e) { 
       logger.log(Level.SEVERE, "", e); 
      } 

    } 

} 

いくつかのディレクトリPROJECT_ROOTにあります。今度はこのディレクトリに上記のコンパイルされたクラスがあります(クラスのフルネームはtestapp.Testなので、testappディレクトリにあります)。あなたの構造は次のようになります。

PROJECT_ROOT 
    testapp 
    Test.class 
    infor.properties 

注意を、クラスがすでにコンパイルされていることを(おそらくその権利を行う方法を知っています?)。あなたの作業ディレクトリがPROJECT_ROOTあるときは、実行することができます。myjar.jarという名前のjarファイルを作成します

jar -vcf myjar.jar * 

を。今、あなたは(JVMがディレクトリのようなjarファイルであるため)クラスパスがmyjar.jarであること(-cp myjar.jar使用して)次のコマンドを単純に言う

java -cp myjar.jar testapp.Test 

を使用してjarファイルを実行することができます。

Test.javaに表示されているように、"testapp/infor.properties"があります。プロパティファイルへのパスは、使用するクラスパスに関して指定する必要があります。クラスパスは、myjar.jarコンテンツのルートです。したがって、testapp/infor.properties。

関連する問題