tomcat安装目录的空格也会惹祸

以前只是听说过:安装tomcat的时候,最好把默认的空格去掉,但一直不知道他能惹什么祸。今天终于被我撞到了。

我写了一个根据正则表达式加载类路径(web-inf/classes目录)配置文件的方法,如下:
Java代码
public static List getResourceFiles(String regex) {  
    ClassLoader classLoader = FileUtil.class.getClassLoader();  
    Enumeration classRootUrls = null;  
    try {  
        classRootUrls = classLoader.getResources("");  
    } catch (IOException e) {  
        throw new BacteriaException("获取类加载器根目录出错。",e);  
    }  
    List files = new ArrayList();  
      
    while (classRootUrls.hasMoreElements()) {  
        URL classRootUrl = (URL) classRootUrls.nextElement();  
        File classRootFile = new File(classRootUrl.getFile());  
        SearchFileHandler sfh = new SearchFileHandler(regex);  
        FileUtil.walkFile(classRootFile, sfh);  
        files.addAll(sfh.getFiles());  
    }  
    return files;  

原理:首先找到类所在目录,然后遍历这个目录,把指定的配置文件都找出来。

 

我在eclipse中运行的时候,一切都很正常。但是部署到tomcat下怎么也加载不了我指定的文件。

于是加上log,把classRootUrls都打出来。

 

在eclipse下运行,找到如下目录:

file:D:/Tomcat 5.0/common/classes/

file:/E:/eclipse/.metadata/.plugins/org.eclipse.wst.server.core/tmp2/webapps/hebmc/WEB-INF/classes/

 

在tomcat下运行,找到如下目录:

file:D:/Tomcat 5.0/common/classes/

file:D:/Tomcat 5.0/shared/classes/

file:/D:/Tomcat%205.0/webapps/xxxxx/WEB-INF/classes/

 

结论已经很明了了,在tomcat中运行的时候,获取到的应用程序的类路径中空格被改成了“%20”,这样一来,java就不认为“file:/D:/Tomcat%205.0/webapps/hebmc/WEB-INF/classes/”是一个目录了。所以无法对它进行遍历。把安装目录的空格去掉后,问题得到了解决。

 

提醒大家如果再有类似的需求,要么把tomcat安装目录的空格去掉,要么得在代码中把“%20”改回空格。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值