系统找不到指定的路径 解决 (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
?
?
?
?
?
?
?