我在项目上创建了两个不同的Java项目取决于其他项目
像一个项目和一个B项目一个项目有logs文件夹,在log4j.xml中,我给出了日志文件的相对路径
现在我在B项目中使用A项目作为api,并且在我调用B时,我已经创建了B项目的可执行jar,这给了我FileNotFoundException。
请建议我.............
log4j:ERROR setFile(null,true) call failed.
java.io.FileNotFoundException: ..\Framework\logs\log.log (The system cannot find the path specified)
at java.io.FileOutputStream.openAppend(Native Method)
at java.io.FileOutputStream.<init>(Unknown Source)
at java.io.FileOutputStream.<init>(Unknown Source)
at org.apache.log4j.FileAppender.setFile(FileAppender.java:273)
at org.apache.log4j.FileAppender.activateOptions(FileAppender.java:152)
at org.apache.log4j.DailyRollingFileAppender.activateOptions(DailyRollingFileAppender.java:206)
at org.apache.log4j.config.PropertySetter.activate(PropertySetter.java:247)
at org.apache.log4j.xml.DOMConfigurator.parseAppender(DOMConfigurator.java:210)
at org.apache.log4j.xml.DOMConfigurator.findAppenderByName(DOMConfigurator.java:140)
at org.apache.log4j.xml.DOMConfigurator.findAppenderByReference(DOMConfigurator.java:153)
at org.apache.log4j.xml.DOMConfigurator.parseChildrenOfLoggerElement(DOMConfigurator.java:415)
at org.apache.log4j.xml.DOMConfigurator.parseRoot(DOMConfigurator.java:384)
at org.apache.log4j.xml.DOMConfigurator.parse(DOMConfigurator.java:783)
at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:666)
at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:616)
at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:602)
at org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:460)
at org.apache.log4j.LogManager.<clinit>(LogManager.java:113)
at com.netapp.ca.framework.logger.LogImpl.<init>(LogImpl.java:35)
log4j:ERROR Either File or DatePattern options are not set for appender [allLog].
log4j:ERROR setFile(null,true) call failed.
最佳答案
我认为您是从jar执行的,因此(当然),路径是错误的,因为您不能(通常)在jar中保存日志文件。
我遇到了同样的问题,并编写了以下方法来接收应用程序可以工作的路径:
String applicationPath = this.getClass().getProtectionDomain().getCodeSource().getLocation().getPath();
applicationPath = applicationPath.replace('\\', '/');
if (applicationPath.startsWith("file:")) applicationPath = applicationPath.substring(5);
if (applicationPath.contains(".jar")) {
String[] parts = applicationPath.split("/");
applicationPath = applicationPath.replaceAll(parts[parts.length - 1], "");
}
我不知道您的应用程序的结构,但我认为这段代码可以为您提供帮助。只需将“ applicationPath”写入控制台,即可知道路径出了什么问题。我敢打赌,这就像罐子问题一样。
关于java - 相对路径FileNotFoundException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15432808/