现在已经被困了一段时间。我试图做的事情归结为:
来源:
InputStream in = ClassLoader.getSystemResourceAsStream("json2/json.js");
当我在tomcat中运行它时(in == null)。
用于诊断我即兴创作了以下内容:
File fu = new File(new URI(this.getClass().getClassLoader().getResource("").toString()));
String[] l = fu.list();
for (int i = 0; i < l.length; i++) {
System.out.println(i+"||"+l[i]);
}
使用经典的java-class它只生成我的main-class-file。在tomcat中它显示了“tomcat / lib”目录的内容。
任何想法?非常感谢...
修改
我忘记添加的一个细节(这真的让我的齿轮磨练):
SParser.class.getClassLoader().getParent().getResource("")
提出了一个null-ptr。跆拳道?我没有访问特定的资源,仍然没有结果。
答案 0 :(得分:6)
请勿使用getSystemResourceAsStream()
。使用getResourceAsStream()
。在Tomcat webapp环境中,系统类加载器不了解Tomcat/lib
,也不了解webapp库。
此外,在抓取ClassLoader
时,最好抓住当前线程的上下文类加载器。
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
InputStream inputStream = classLoader.getResourceAsStream("/json/json.js");
答案 1 :(得分:0)
将JAR文件放在应用程序的WEB-INF/lib
目录中。