----------------------------------------------------------------------------------
利用Eclipse创建Java Project工程
目录结构是:
src--bissup----connfile--
!Tmp.java
!constantinfo.properties
Tmp.java文件内容:
public static void main(String[] args) {
String url = "bissup/connfile/constantinfo.properties";
InputStream stream = ClassLoader.getSystemResourceAsStream(url);
if (stream != null ) {
System.out.println("read file OK!");
}
}
这个执行没有问题。
---------------------------------------------------------------------------------------
利用Eclipse创建Web Project工程
目录结构是:
WebContent--
!src--
! ------bissup---connfile--
! !BissupServlet.java
! !constantinfo.properties
!WEB-INF--
BissupServlet.java里的代码
protected void doPost(HttpServletRequest request,HttpServletResponse response){
String url = "bissup/connfile/constantinfo.properties";
InputStream stream = ClassLoader.getSystemResourceAsStream(url);
if (stream != null ) {
System.out.println("read file OK!");
}
}
结果找不到文件,
其实两个工程的文件目录都是一样的(都是在Eclipse里调试运行的)
请问这是为什么呢?希望各位赐教
6 个解决方案
#1
因为你使用的是相对路径,在Web应用中和在Java应用中,相对路径的起始点是不一样的
Web应用中,相对路径的起始点是classes目录,而Java应用就不一定了。
Web应用中,相对路径的起始点是classes目录,而Java应用就不一定了。
#2
嗯,Tomcat的参考路径是它的bin目录,通常WEB应用我会用ServletContext来定位绝对路径.
#3
to:infowain(infowain)
相对路径没有错
我也注意到这一点了
但是在 tomcat目录下
C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\Samples\WEB-INF\classes\bissup\connfile
有constantinfo.properties 和BissupServlet.class 两个文件,在同一目录下
问题还是不行
相对路径没有错
我也注意到这一点了
但是在 tomcat目录下
C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\Samples\WEB-INF\classes\bissup\connfile
有constantinfo.properties 和BissupServlet.class 两个文件,在同一目录下
问题还是不行
#4
To:wenqiang_luo()
请教一下具体的ServletContext操作
我我正在测试
String url = "bissup/connfile/constantinfo.properties";
InputStream stream = null ;
ServletContext context = getServletContext();
stream = context.getResourceAsStream(url);
把你的代码共享一下,我现在一头雾水
请教一下具体的ServletContext操作
我我正在测试
String url = "bissup/connfile/constantinfo.properties";
InputStream stream = null ;
ServletContext context = getServletContext();
stream = context.getResourceAsStream(url);
把你的代码共享一下,我现在一头雾水
#5
解决不了,郁闷,大侠指点一下
#6
用这个classloader
Thread.currentThread().getContextClassLoader()
Thread.currentThread().getContextClassLoader()
#1
因为你使用的是相对路径,在Web应用中和在Java应用中,相对路径的起始点是不一样的
Web应用中,相对路径的起始点是classes目录,而Java应用就不一定了。
Web应用中,相对路径的起始点是classes目录,而Java应用就不一定了。
#2
嗯,Tomcat的参考路径是它的bin目录,通常WEB应用我会用ServletContext来定位绝对路径.
#3
to:infowain(infowain)
相对路径没有错
我也注意到这一点了
但是在 tomcat目录下
C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\Samples\WEB-INF\classes\bissup\connfile
有constantinfo.properties 和BissupServlet.class 两个文件,在同一目录下
问题还是不行
相对路径没有错
我也注意到这一点了
但是在 tomcat目录下
C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\Samples\WEB-INF\classes\bissup\connfile
有constantinfo.properties 和BissupServlet.class 两个文件,在同一目录下
问题还是不行
#4
To:wenqiang_luo()
请教一下具体的ServletContext操作
我我正在测试
String url = "bissup/connfile/constantinfo.properties";
InputStream stream = null ;
ServletContext context = getServletContext();
stream = context.getResourceAsStream(url);
把你的代码共享一下,我现在一头雾水
请教一下具体的ServletContext操作
我我正在测试
String url = "bissup/connfile/constantinfo.properties";
InputStream stream = null ;
ServletContext context = getServletContext();
stream = context.getResourceAsStream(url);
把你的代码共享一下,我现在一头雾水
#5
解决不了,郁闷,大侠指点一下
#6
用这个classloader
Thread.currentThread().getContextClassLoader()
Thread.currentThread().getContextClassLoader()