Runnable Jar中的源文件夹消失了

时间:2016-11-12 21:01:25

标签: java eclipse jar log4j

我已经尝试了几个小时的工作但仍然无法做到这一点所以我想我会问。我正在尝试使用log4j将程序语句写入输出文件,并在我的本地计算机上正常工作。

我目前将log4j.properties文件放在名为logging的文件夹中。它被标记为源文件夹。当通过eclipse生成我的可运行JAR文件时,我将它放在另一台服务器上运行,它说无法找到log4j.properties文件。到目前为止,我尝试了一些不同的东西,没有任何工作。我想要做的就是确保log4j.properties文件包含在可运行的JAR中。我的设置现在就是以下内容。

    Project foler - called test

-logging\log4j.properties.

在我的Java程序中,我有以下在本地工作的代码。在Eclipse中的JAR生成过程中,我是否遗漏了一些基本步骤?看起来这应该很容易,但现在不是。我甚至在创建后在7zip中提取了JAR,果然,日志记录文件根本就没有。由于某种原因,它完全消失了。如果有人能帮助我,我将不胜感激,谢谢。

  public static void main(String[] args)  
   {

        FileInputStream fis = new FileInputStream("logging\\log4j.properties");

        if(fis != null)
        {
            PropertyConfigurator.configure(fis);
        }

        logger.info("process started.");
    }

更新

我没有直接使用InputStream,而是将我的代码修改为只使用下面的代码,现在它正在运行,通过runnable jar访问log4j.properties文件。

PropertyConfigurator.configure(Converter.class.getResourceAsStream("/logging/log4j.properties"));
logger.info("Conversion process started.");

1 个答案:

答案 0 :(得分:1)

我看到2个问题: a)当你使用eclipse创建一个jar时,默认情况下它只将已编译的类(所以.class文件)压缩到你的目标.jar文件中,你需要指定eclipse你还要包含项目的资源,这些可以是配置文件,如log4j的属性文件,但也可以是i18n消息等的资源包....有关如何执行此操作的说明,请访问:Java & Eclipse: Resources in JAR?。因此,如果log4j的属性不在jar文件中,那么请仔细检查jar文件的创建!

b)如果您的jar文件中有资源,则无法使用fileinputstream读取它们:它们不存储在独立文件中,而是存储在jar文件中。我假设您的jar文件是类路径的一部分,因此当您将资源添加到jar文件中时,您需要将它们视为资源:有关此主题的更多信息,请参阅Load resource from anywhere in classpath