系统找不到指定的路径 解决 (log4j配置问题)

配置OpenUddi时遇到下面的报错:

 

log4j:ERROR setFile(null,true) call failed.
java.io.FileNotFoundException: \tmp\uddi-access.log (系统找不到指定的路径。)
 at java.io.FileOutputStream.openAppend(Native Method)
 at java.io.FileOutputStream.<init>(FileOutputStream.java:177)
 at java.io.FileOutputStream.<init>(FileOutputStream.java:102)
 at org.apache.log4j.FileAppender.setFile(FileAppender.java:272)
 at org.apache.log4j.RollingFileAppender.setFile(RollingFileAppender.java:156)
 at org.apache.log4j.FileAppender.activateOptions(FileAppender.java:151)
 at org.apache.log4j.config.PropertySetter.activate(PropertySetter.java:247)
 at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:123)
 at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:87)
 at org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:645)
 at org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:603)
 at org.apache.log4j.PropertyConfigurator.parseCatsAndRenderers(PropertyConfigurator.java:524)
 at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:408)
 at org.apache.log4j.PropertyConfigurator.configure(PropertyConfigurator.java:340)
 at com.novell.uddi3.LogInitializer.contextInitialized(LogInitializer.java:67)
 at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3934)
 at org.apache.catalina.core.StandardContext.start(StandardContext.java:4429)
 at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
 at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
 at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:526)
 at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:850)
 at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:724)
 at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:493)
 at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1206)
 at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:314)
 at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
 at org.apache.catalina.core.StandardHost.start(StandardHost.java:722)
 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
 at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
 at org.apache.catalina.core.StandardService.start(StandardService.java:516)
 at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
 at org.apache.catalina.startup.Catalina.start(Catalina.java:583)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:597)
 at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
 at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)

 

从报错信息上来看是我在运行OpenUddi时,有文件找不到。

 

其实真正原因log4j.properties里的一个配置项有问题,我的文件中有这样一项:

log4j.appender.ACCESS_FILE.File=/tmp/uddi-access.log

 

根据这样的配置项log4j会为你依照这个目录找到uddi-access.log, 如果没有这个文件,也会帮你创建文件,但是如果这个目录不存在,它就报错啦。现在的配置log4j会认为Tomcat所在的根目录下有一个tmp文件夹,但是我的D盘下没有这个folder,所以就报错了。

 

解决方法:

1.在D盘下创建一个tmp

2.改配置项,比如:

    log4j.appender.ACCESS_FILE.File=../webapps/uddi/uddi-access.log

 

 

 

 

 

 

 

你可能感兴趣的:(java,apache,tomcat,log4j,Access)