Java如何在创建简单安装程序时确定应用程序目录

时间:2014-02-21 06:57:05

标签: java installer

我需要在应用程序目录中创建一个 log 文件。目前我正在使用硬编码的绝对路径,如

public class Transformer
{
  static String LOG_DIR = "ABSOLUTE_PATH_TO_THE_APPLICATION_DIRECTORY";
  File log = new File(log_DIR, "log");
}

如果其他人拥有我的代码,他必须转到源代码,更改LOG_DIR然后重新编译。我只是对GNU make 了解一点。我的问题是,如何创建一个类似于“

”的“安装程序”
./config
make install

实现这一目标的标准/更好的方法是什么?

目前我有:

  1. String path = Transformer.class.getProtectionDomain()。getCodeSource()。getLocation()。getPath()
  2. Best way to load application settings
  3. 使用2,我想我可以使用shell脚本生成.properties文件。

    更新

    对于令人困惑的“日志文件”感到抱歉,但我实际上是指一个普通文件,它恰好包含某种日志信息。

1 个答案:

答案 0 :(得分:0)

您可以在应用程序启动时定义“app.logs.dir”属性,并在log4j配置中引用它:

main(String[] args) {
  ...
  final String appRootDir = /* Detect app location. */;
  System.setProperty("app.logs.dir", appRootDir);

  // Now we can use the logger.
  ...
}

在“log4j.properties”中:

 log4j.appender.filelog.file=${app.logs.dir}/myapp.log

<强>更新

选项#1,getProtectionDomain(),可能不起作用,具体取决于JVM的SecurityManager设置,因此最好的方式可能是选项#2 - 您的安装程序脚本应该存储应用程序安装位置在应用程序配置文件中。

为了保持组件引用的数量较少,您可以将配置文件读入System属性,就像我上面所示。

File log = new File(System.getProperty("app.logs.dir"), "log");