2013-02-05 11 views
12

のpom.xmlに見えます:はgetClass()getResourceAsStream()

src/main/resourcesディレクトリに
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>groupId</groupId> 
    <artifactId>artifactId</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 

    <build> 
    <sourceDirectory>src/main/java</sourceDirectory> 
    <resources> 
    <resource> 
    <directory>src/main/resources</directory> 
    </resource> 
    </resources> 
    </build> 
</project> 

私はテストと呼ばれるファイルを持っています。コードの行は、Eclipse内で実行されたとき、私はエクスポートすると

System.out.println(this.getClass().getResourceAsStream("test")); 

が、私は出力

[email protected] 

として得る:src/main/javaディレクトリで は、私は次の行が含まれているクラスを持っていますプロジェクトを.jarとして実行して出力します。

null 

何か問題があったのですか?

+3

クラスは単体テストか実際の生産クラスですか?私は生産的なクラスを想定しています。 getResourcesAsStream( "test")をgetResourcesAsStream( "/ test")に変更する必要があります。 – khmarbaise

+0

@khmarbaiseあなたは正しいですが、なぜそれは日食で働いていますか? – ben75

+1

このテストリソースは、パッケージ名の有無にかかわらず* src/main/resources *フォルダまたは* src/test/resources *フォルダにありますか?さらに、* src/main/java *や* src/main/resources *フォルダを設定する必要はありません。 – khmarbaise

答えて

2

私はこのエラーが発生しましたが、グーグルリングのトンを介して、私は解決策を見つけることができませんでした。 すべての答えはパスについてです、誰もがそれをエクスポートしたjarファイルにEclipseで実行されてもいないことを気にしない:(

しかし、今、私はそう単純で、解決策を見つけた:あなたのMavenプロジェクト - >プロパティでEclipseの右クリックで - > Javaのパスを構築する - > [ソース]タブ

あなたが好きな木を参照することができますので、それはjarファイル:)

012をエクスポート今 Included (All) なる既存のものを削除し、 Included (**/*.java)

MyProject/src 
    Ouput follder.. 
    Included (**/*.java) 
    Excluded 
    ... 

ダブルクリックして

5

<build><resources>の下に<include>を必ず入れてください。 これは、これらのファイルをフェッチしてビルドに含めるよう明示的に指示します。

<build> 
    <resources> 
     <resource> 
      <directory>${basedir}/src/main/resources</directory> 
      <includes> 
       <include>**/*</include> 
      </includes> 
     </resource> 
    </resources> 
    ... 
    </build> 
+0

私は '**/*'だったインクルード構文が見つかりました –