有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

从java包加载log4j属性

在我的java swing应用程序中,我从存储在应用程序包中的属性文件加载log4j属性,并将该属性文件加载为

try {                            
     PropertyConfigurator.configure("conf/log4j.properties");
     logger.info("Starting the system.");                           

} catch (Exception e) {
     e.printStackTrace();

}

然后,当应用程序启动时,我得到以下错误:

log4j:ERROR Could not read configuration file [conf/log4j.properties].
java.io.FileNotFoundException: conf/log4j.properties (No such file or directory)
        at java.io.FileInputStream.open(Native Method)
        at java.io.FileInputStream.<init>(FileInputStream.java:138)
        at java.io.FileInputStream.<init>(FileInputStream.java:97)
        at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:297)
        at org.apache.log4j.PropertyConfigurator.configure(PropertyConfigurator.java:315)
        at com.bio.ofm.mnu.views.SplashScreen$1.run(SplashScreen.java:70)
        at java.lang.Thread.run(Thread.java:722)
log4j:ERROR Ignoring configuration file [conf/log4j.properties].
log4j:WARN No appenders could be found for logger (com.bio.ofm.mnu.views.SplashScreen).
log4j:WARN Please initialize the log4j system properly.

这种加载属性文件的方式是否错误?请帮忙

我构建了一个。jar文件并使用该jar运行应用程序**


共 (3) 个答案

  1. # 1 楼答案

    我经常使用Rachel java库http://rachel.sourceforge.net/来处理这类东西

    下载lib并将其添加到类路径中。然后,您可以像这样使用它来从JAR文件/包加载任何文件,在使用JNLP部署的应用程序时,它也可以工作。他们有很多关于加载文件的最佳方法的好教程可供阅读。我通常喜欢将它们作为输入流加载

  2. # 2 楼答案

    如果conf是您可以使用的源文件夹:

    PropertyConfigurator.configure("classpath:conf/log4j.properties");
    

    否则你可以试试这个:

    PropertyConfigurator.configure(this.getClass().getClassLoader().getResource("conf/log4j.properties"));
    
  3. # 3 楼答案

    LogManager自动类将在用于加载log4j类的classpath中查找名为log4j.propertieslog4j.xml的文件。在版本1.2.6之前,log4j只会在类路径中查找log4j.properties文件。自1.2.7版以来,log4j在类路径中同时查找log4j.propertieslog4j.xml

    只需将log4j文件放在默认包中即可。您还应该确保该文件位于.class目录中