【问题标题】:Gradle - Launch4j - Current Working DirectoryGradle - Launch4j - 当前工作目录
【发布时间】:2019-04-15 17:48:16
【问题描述】:

我正在使用 Gradle 中的 Launch4j 插件创建一个 exe 文件。我的目的是在执行放置在另一个目录中的 exe 文件时获取我所在的目录。比如exe文件放在“C:\Utilities”,我的当前目录是“C:\temp”。当我执行“C:\Utilities\my.exe”时,我想在我的 main 方法中获取“C:\temp”。

我尝试将 %CD% 的结果作为系统属性发送 -

createExe {
    mainClassName = 'com.eldho.mp3tools.Mp3ToolsMain'
    jvmOptions = ['-Dworking.dir="%CD%"']
}

但是,它在我的方法中变成了空白。

我也在方法里面试过这个——

Path currentRelativePath = Paths.get("");
String s = currentRelativePath.toAbsolutePath().toString();
logger.info("Current relative path is: " + s);

这给出了 exe 文件所在的目录 (C:\Utilities)。

感谢任何帮助。

【问题讨论】:

  • 您是否试图获取运行 exe 的路径?如果是这样,为什么不尝试更以 Java 为中心的方法呢?这 - stackoverflow.com/a/227640 - 允许您获取类的位置。从你的exe运行时它输出什么?值得一试。
  • 我正在寻找我在运行不同目录中的 exe 时所在的目录。

标签: java gradle command exe launch4j


【解决方案1】:

一种可能的解决方案是将 Launch4j 配置的 chdir 属性“设为空”,默认情况下它使用“.”。但只有在包装器启动您的 Jar 文件时才会解释。

launch4j {
   mainClassName = 'com.eldho.mp3tools.Mp3ToolsMain'
   chdir = ''
}

在此讨论issue

【讨论】:

    猜你喜欢
    • 2016-03-22
    • 1970-01-01
    • 2013-11-27
    • 1970-01-01
    • 2012-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多