2017-04-03 20 views
0

我的項目目錄結構:使用Maven ClassLoader.getSystemClassLoader()getResource()方法返回(在Eclipse)空

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

在主類,我有以下線返回的返回null,同時通過MAVEN

excuting主類
String folderName = "stories"; 
URL appURL = ClassLoader.getSystemClassLoader().getResource(folderName); 

在通過maven執行時,appURL返回NULL。

通過閱讀Stackoverflow上的一篇文章,我得到了kanow,我在服務器上運行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(... )替代ClassLoader.getSystemClassLoader()。getResource(...) – Pradeep

+0

因爲「無法對非靜態方法進行靜態引用」而出錯,因爲上面的代碼是主要的方法。 – Hema

+0

嗨,你需要創建你的類的對象,如 YourClass a = new YourClass();然後你需要調用a.getClass()。getClassLoader()。getResource(...) – Pradeep

回答

1

有兩種方法可以實現這個

方法1)

如果它不在主要方法內 URL url = getClass()。getClassLoader()。getResource(「someresource.xxx」); 如果它在主體中,則需要創建類的對象,然後調用getClass。

方法2)

通過擴展的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(); 
    } 
} 

參考:。URL to load resources from the classpath in Java

+0

非常感謝你的幫助,Pradeep。有效。我創建了類的對象,然後使用getclass()方法 – Hema

+0

很高興聽到這一點。歡迎您。 – Pradeep

相關問題