我的项目目录结构(在Eclipse中):
MyProject/
src/main/Java
src/main/resources
stories
file.story
在Main class中,我返回以下行,并在通过MAVEN激活主课时返回null
String folderName = "stories";
URL appURL = ClassLoader.getSystemClassLoader().getResource(folderName);
通过maven执行时,appURL返回NULL。
通过阅读Stackoverflow上的一篇文章,我得知道,我在服务器上运行webapp但是没有引用服务器上的资源,所以我们需要在POM.xml文件中添加一些代码。我在POM.xml文件中添加了以下代码,但仍无法正常工作:(
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>stories</include>
</includes>
</resource>
</resources>
寻求帮助。
答案 0 :(得分:1)
有两种方法可以实现这个目标
方法1)
如果它不在main方法中 URL url = getClass()。getClassLoader()。getResource(&#34; someresource.xxx&#34;); 如果它在main中,你需要创建类的对象,然后在其上调用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();
}
}