2016-04-06 62 views
1

私の目標は、Eclipseから実行可能なjarファイルを作成することです。私は以下の構造でうまく動作するEclipseプロジェクトを持っています。実行可能なjarのプロパティファイルにアクセス

src/main/java 
-com.main 
     ->MyClass 

src/main/resources 
->MyProps.properties 

MyClass

私のEclipseプロジェクトが正常にMyProps.propertiesファイルにアクセスすることが可能です。

Eclipseプロジェクトをエクスポートして実行可能なjarファイルを作成した後、jarファイルの構造は以下のようになります。

MyJar.jar

-com.main 
    ->MyClass 

-resources 
->MyProps.properties 

私はそれは性質がNullPointerExeceptionを投げて、ファイルへのアクセスに失敗したjarファイルを実行すると。

私のコード

InputStream input = MyClass.class.getClassLoader() 
          .getResourceAsStream("resources/MyProps.properties"); 

私は、実行可能jarファイルとして私のプロジェクトをエクスポートする場合、私はもうMyProps.propertiesにアクセスすることはできません。

誰かが私を助けてくれますか?

+2

プロパティファイルにアクセスするコードを表示します。 –

+0

試したコードを追加してください。 'maven'プロジェクトのように見え、このファイルにリソースとしてアクセスしようとします。 –

+0

'InputStream file = MyClass.getResourceAsStream("/resources/MyProps.properties ")' – Ferrybig

答えて

0

あなたは、プロパティはクラスパス上のファイルの読み取りには、以下のようなコードを使用することができます:onderで

MyClass.class.getClassLoader().getResourceAsStream("MyProps.properties") 
0

をjarファイルからファイルをロードします。 Class.getResource()またはClass.getResourceAsStream()を使用する必要があります。

URL properties = ConfigLoaderTest.class.getResource("/resources/MyProps.properties"); 

この

はthiusが、それはまた、あなたのクラスパスにjarファイル内部を見ることを意味し、あなたのクラスパスからファイルをロードします(実行可能なjarファイルは自動的にクラスパス上にあります)。 最初の '/'は、クラスパス上のjarファイルのルートを表示することを示しています。コード内でこれを省略しています。

URLは、任意のURLと同じように読み取ることができます(見つからない場合はnullを返します)。瞬時にはproperties.openStream()を使用してください。

デフォルトのmaven構造体src/main/resourcesを使用しているようですが、eclipseビルドパスにはsrc/mainがありますので、jarファイルでresourcesディレクトリを取得してください。 Mavenプロジェクトの通常の場合は、ビルドパスにsrc/main/resourcesがあります。あなたのjarファイルのルートにプロパティファイルが置かれます。

+0

これはjar内でアクセスする必要があります –

+0

これはあなたのjarファイルの内容を調べます。これを答えに追加しました。 – Thirler

+0

コードを追加したので、投稿のコードとの違いを強調しました。 – Thirler

関連する問題