从tomcat访问jar文件
他在那里
现在被卡住了一段时间。我试图做的事情归结为:
- 我已经开发了一个小库,正在以jar文件的形式进行部署。它包含一个我需要访问的文件,该文件位于“ json2 / json.js”中(是,doin jscript / rhino东西)
- 我将jar文件导入到经典的Java项目中,效果很好。找到文件并读取
- 我将SAME jar文件导入到tomcat-project中,如下所示: __
- 调用Java类的.jsp
- 在Java类内部,我调用了我的库,该库位于tomcat / lib目录中
- 现在,当我尝试访问文件时,我无法(空指针)
资料来源:
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/lib
webapp库。
另外,当抓取时ClassLoader
,最好应抓取当前线程的上下文类加载器。
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();InputStream inputStream = classLoader.getResourceAsStream("/json/json.js");
以上是 从tomcat访问jar文件 的全部内容, 来源链接: utcz.com/qa/400914.html