他在那里
现在被卡住了一段时间。我试图做的事情归结为:
资料来源:
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类,它只会生成我的main-class-file。在tomcat中,它向我显示了“ tomcat / lib”目录的内容。
有任何想法吗?将不胜感激…
编辑
我忘记添加的一个细节(确实磨碎了我的装备):
SParser.class.getClassLoader().getParent().getResource("")
提出了一个null-ptr。wtf?我没有访问特定的资源,仍然没有结果。
不要使用getSystemResourceAsStream()。使用getResourceAsStream()。在Tomcat Webapp环境中,系统类加载器不了解Tomcat/libwebapp库。
getSystemResourceAsStream()
getResourceAsStream()
Tomcat/lib
另外,当抓取时ClassLoader,最好应抓取当前线程的上下文类加载器。
ClassLoader
ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); InputStream inputStream = classLoader.getResourceAsStream("/json/json.js");