这是我的第一个Stackoverflow问题。
我搜索了Google以获取Java中的当前文件名。如果文件是JAR文件,大多数消息来源告诉用户如何找到当前文件名,但是我要求当前文件是否是EXE文件。
我在Get name of running Jar or Exe中看到了一个EXE答案,但我认为它不起作用。
我使用JSmooth EXE包装器(launch4j以某种方式对我不起作用)和Java 8.我的问题是否有直接的解决方案?此外,很好地解释它是如何工作的,或者提供关于它的Java纪录片的链接。
编辑:为了澄清,假设我创建了一个Java程序并使用了JAR包装器,并将生成的EXE命名为“test.exe”。我希望Java程序能够给我当前的“test.exe”目录,包括文件名本身(test.exe)。
另一个编辑:为了澄清更多信息,请转到桌面,创建一个文本文件,并在其中添加一些文本。保存它,并将文本文件更改为EXE文件。然后,尝试打开它。 Windows将出错。请注意消息对话框的标题是打开文件的文件路径。这就是我想要的输出类型。
感谢。
答案 0 :(得分:2)
根据JSmooth文档,
JSmooth还为您的应用程序提供了一些特殊变量。
Form Meaning ${EXECUTABLEPATH} Replaced by the path to the executable binary. For instance, if the executable binary launched is located at c:/program files/jsmooth/test.exe, this variable is replaced with c:/program files/jsmooth ${EXECUTABLENAME} Replaced by the name of the executable binary. For instance, if the executable binary launched is located at c:/program files/jsmooth/test.exe, this variable is replaced with test.exe
您可以在“环境设置”(最后一个面板)下的JSmooth中设置它们,这样您就可以映射变量名称。所以,
MY_EXECUTABLEPATH=${EXECUTABLEPATH}
MY_EXECUTABLENAME=${EXECUTABLENAME}
在您的应用程序中,您可以使用
获取String execPath = System.getProperty("MY_EXECUTABLEPATH");
String execName = System.getProperty("MY_EXECUTABLENAME");
答案 1 :(得分:0)
public class JavaApplication1 {
public static void main(String[] args) {
System.out.println("Working Directory = " +
System.getProperty("user.dir"));
}
}
这将打印应用程序初始化的完整绝对路径。它仅用于获取DIRECTORY。
如果您使用的是.exe,为什么不创建安装程序?您可以使用Inno Setup,这样您就可以指定存储.exe的位置,并通过自定义目录从应用程序中获取