不是这样的,用绝对路径就好了,
因为你启动tomcat的目录是tomcat\bin,
所以虚拟机把这个当作当前目录(..)
所以你如果不写绝对路径就会在这儿找,对于log4j的配置,你可以把log4j的配置文件放到web-inf/classes里,不用PropertyConfigurator.configure("log4j.properties");
这种格式,直接static Logger logger = Logger.getLogger(ReportMenuTree.class);
就行了

解决方案 »

  1.   


    我这是一个web 应用程序,需要发不到客户的机器上。用绝对路径不合适,因为用户可能根据自己的需要,把web 工作目录放在不同的位置;另外,我也知道没有或者不用配置log4j.properties也可以使用log4j 。但是不用配置的时候,先是规则是默认的,不符合我的要求 -- 比如,不显示行号。所以,配置文件也是需要的
      

  2.   

    加一个"/",然后目录就是你的工程所在的根目录了
    PropertyConfigurator.configure("/log4j.properties");
      

  3.   

    我那是一个web应用程序,访问的时候一般格式是 http://ip/myWeb/ ,但是呢这个myWeb的名称可能不固定。所以不能直接使用/log4j.properties 这种格式来存放。
      

  4.   

    你在程序里面读取文件的时候,如果没有写绝对地址,默认的目录是CLASS_PATH里面设定的目录,只要你的文件在CLASS_PATH里面,在程序里只用写文件名就能读到。一般来说,property文件都在WEB_INF/classes/下面,因为这个目录会被默认的指定为CLASS_PATH.