2017-04-03 2 views
0

(Eclipseの)私のプロジェクトのディレクトリ構造:メインクラスで)(MavenのClassLoader.getSystemClassLoaderを使用してのgetResource()の戻りヌル

MyProject/ 
    src/main/Java 
    src/main/resources 
     stories 
      file.story 

MAVEN

を介してメインクラスをexcutingながら、私はnullを返す行の下のリターンを持っています
String folderName = "stories"; 
URL appURL = ClassLoader.getSystemClassLoader().getResource(folderName); 

throughMavenを実行中、appURLはNULLを返します。

Stackoverflowで1つのポストを読むと、私はそのサーバーにwebappを実行していますが、サーバー上のリソースへの参照がないため、POM.xmlファイルにコードを追加する必要があります。私は、pom.xmlファイル内のコードの下に追加されているが、まだ助けをお探し:(

<resources> 
     <resource> 
      <directory>src/main/resources</directory> 
      <filtering>true</filtering> 
      <includes> 
       <include>stories</include> 
      </includes> 
     </resource> 

    </resources> 

を働いていないの。

+0

は、あなたがこの選択肢はgetClassで試すことができます()のgetClassLoader()のgetResourceを(... )。ClassRoader.getSystemClassLoader()。getResource(...)の代替として – Pradeep

+0

"静的ではないメソッドへの静的参照を作成できません"というエラーが表示される上記のコードはmainメソッドにあります。 – Hema

+0

こんにちは、あなたのクラスのオブジェクトを作成する必要があります YourClass a = new YourClass(); a.getClass()を呼び出す必要があります。getClassLoader()。getResource(...) – Pradeep

答えて

1

を2つの方法がありますが、この

アプローチを達成することができます1)

メインメソッドの内側にない場合 URL url = getClass()。getClassLoader()。getResource( "someresource.xxx"); メインの内側にある場合は、クラスのオブジェクトを作成し、その上でgetClassを呼び出す必要があります。 。。URLStreamHandlerの

import java.io.IOException; 
import java.net.URL; 
import java.net.URLConnection; 
import java.net.URLStreamHandler; 

/** A {@link URLStreamHandler} that handles resources on the classpath. */ 
public class YourClass extends URLStreamHandler { 
    /** The classloader to find resources from. */ 
    private final ClassLoader classLoader; 

    public YourClass() { 
     this.classLoader = getClass().getClassLoader(); 
    } 

    public YourClass(ClassLoader classLoader) { 
     this.classLoader = classLoader; 
    } 

    @Override 
    protected URLConnection openConnection(URL u) throws IOException { 
     final URL resourceUrl = classLoader.getResource(u.getPath()); 
     return resourceUrl.openConnection(); 
    } 
} 

参考拡張することにより

アプローチ2)

URL to load resources from the classpath in Java

+0

ありがとうございました。出来た。私はクラスのオブジェクトを作成してgetclass()メソッドを使用しました – Hema

+0

それを聞いてうれしい。あなたは大歓迎です。 – Pradeep

関連する問題