为什么我收到这个FileNotFoundException,我该如何解决它?

问题描述:

我正在尝试在我的tomcat服务器上实现Log4J日志记录(我们已经在我们的本地环境中实现了这一点,并且我准备将我们的服务迁移到AWS)。我遵循instructions found in the Tomcat7 documentation,并将所有内容都放在合适的位置。当我尝试启动Tomcat时,我收到日志中的FileNotFound异常,并且应用程序无法启动。为什么我收到这个FileNotFoundException,我该如何解决它?

Configuration error 
java.io.FileNotFoundException: /usr/share/tomcat7/conf/logging.properties (No such file or directory) 
     at java.io.FileInputStream.open(Native Method) 
     at java.io.FileInputStream.<init>(FileInputStream.java:146) 
     at java.io.FileInputStream.<init>(FileInputStream.java:101) 
     at org.apache.juli.ClassLoaderLogManager.readConfiguration(ClassLoaderLogManager.java:466) 
     at org.apache.juli.ClassLoaderLogManager.readConfiguration(ClassLoaderLogManager.java:311) 
     at java.util.logging.LogManager$2.run(LogManager.java:320) 
     at java.util.logging.LogManager$2.run(LogManager.java:318) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.util.logging.LogManager.readPrimordialConfiguration(LogManager.java:318) 
     at java.util.logging.LogManager.getLogManager(LogManager.java:300) 
     at java.util.logging.Logger.<init>(Logger.java:265) 
     at java.util.logging.LogManager$RootLogger.<init>(LogManager.java:1468) 
     at java.util.logging.LogManager$RootLogger.<init>(LogManager.java:1466) 
     at java.util.logging.LogManager$1.run(LogManager.java:204) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.util.logging.LogManager.<clinit>(LogManager.java:181) 
     at java.util.logging.Logger.demandLogger(Logger.java:339) 
     at java.util.logging.Logger.getLogger(Logger.java:393) 
     at org.apache.juli.logging.impl.Jdk14Logger.getLogger(Jdk14Logger.java:164) 
     at org.apache.juli.logging.impl.Jdk14Logger.<init>(Jdk14Logger.java:55) 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
     at java.lang.reflect.Constructor.newInstance(Constructor.java:526) 
     at org.apache.juli.logging.impl.LogFactoryImpl.createLogFromClass(LogFactoryImpl.java:1025) 
     at org.apache.juli.logging.impl.LogFactoryImpl.discoverLogImplementation(LogFactoryImpl.java:844) 
     at org.apache.juli.logging.impl.LogFactoryImpl.newInstance(LogFactoryImpl.java:541) 
     at org.apache.juli.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:292) 
     at org.apache.juli.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:269) 
     at org.apache.juli.logging.LogFactory.getLog(LogFactory.java:657) 
     at org.apache.catalina.startup.Bootstrap.<clinit>(Bootstrap.java:49) 

我怀疑这是因为有一些不规范的有关我们Tomcat7配置,而是由一个顾问谁不再对我进行对AWS的初始设置。我在哪里可以看到什么,我应该检查什么来纠正这个问题?

很好的答案不应该教我把一个logging.properties文件/usr/share/tomcat7/conf/,因为那不是我的现有配置是如何工作的(我没有这个问题存在)和tomcat7文件明确地告诉用户从删除logging.properties../conf/,除非有一些警告,要求它不在tomcat文档中表达。

看来这个问题与tomcat7 bash shell脚本有关(无论是由上述顾问编写还是更新)。此脚本经过硬编码检查Java选件中的logging.properties文件(-Djava.util.logging.config.file="${CATALINA_BASE}/conf/logging.properties")。

从tomcat7脚本中删除此行已更正此问题。