环境是tomcat5.5,jdk1.6。在本地跑得好好的。一放到服务器上就出现问题。开始是
String path = Global.class.getResource("/spring/applicationContext.xml")
.getPath();
path = path.substring(1, path.length());
File file = new File(path);
File dir = file.getParentFile();
String[] files = dir.list();
for (int i = 0, n = files.length; i < n; i++) {
files[i] = "/spring/" + files[i];
}        
}这里的String[] files = dir.list();返回了一个空值。
但是我打日志看了前面的变量。dir已经得到了。怎么返回空值呢?后来我把这段代码注释掉,直接赋值了。
后来又出现了错误。[INFO ] 2007-05-23 15:29:34 jaoso.framework.security.impl.AclImpl - set acl config file : E:/Program%20Files/Apache%20Software%20Foundation/Tomcat%205.5/webapps/news/WEB-INF/jaas/acl-config.xml
[ERROR] 2007-05-23 15:29:34 jaoso.framework.security.impl.AclImpl - parse  acl-config.xml: java.io.FileNotFoundException: E:\Program%20Files\Apache%20Software%20Foundation\Tomcat%205.5\webapps\news\WEB-INF\jaas\acl-config.xml (系统找不到指定的路径。)很奇怪,空格被%20给替换了。不知道是不是因为这个而找不到文件。
可能和前面的是同一个问题。
从没遇到过这种问题。在网上也搜不到答案。
谁知道为什么?

解决方案 »

  1.   

    应该是你说的原因,路径被%号取代了
    String path = Global.class.getResource("/spring/applicationContext.xml")
    这里的/换成\或者// 看下
      

  2.   

    getResource返回的是个url,getPath()得到的空格被转化成了%20了,原来是这个原因。可是一个个得改过来,那也太费劲了。有什么办法呢?
      

  3.   

    部署环境的目录不要带空格啊!很忌讳的!比如program files目录下!
    可以放E:/news下
      

  4.   

    可是已经放在program files下面了,我也没办法。
    我还是写个类,看哪里会调都转一下吧。