如何在执行java可执行文件(.exe)时获取CMD的目录
如何从已导出并转换为.exe文件的java文件中找到CMD当前所在的当前目录 我不是在寻找当前的工作目录,因为它只获取.exe文件的位置如何在执行java可执行文件(.exe)时获取CMD的目录,java,Java,如何从已导出并转换为.exe文件的java文件中找到CMD当前所在的当前目录 我不是在寻找当前的工作目录,因为它只获取.exe文件的位置 System.getProperty(“user.dir”)不是我要找的。 与新文件相同(“.”) 如果cmd是C:Users/User/Desktop,然后我调用file.exe,我想知道路径C:Users/User/Desktop,而不是file.exe的目录 我通过:(使用Eclipse)将Main.java文件转换为.exe 将s File.Jar导出
System.getProperty(“user.dir”)
不是我要找的。
与新文件相同(“.”)
如果cmd是C:Users/User/Desktop
,然后我调用file.exe
,我想知道路径C:Users/User/Desktop
,而不是file.exe
的目录
我通过:(使用Eclipse)将Main.java文件转换为.exe
将s File.Jar导出为可运行的Jar文件
Launch4j-Outputfile=file.exe-Jar runtime path=Jars/file.Jar-不要包装Jar,只启动这应该可以工作:
import java.util.*;
import java.lang.*;
public class GetExePath
{
public static void main(String args[]) {
try{
String exePath = System.getProperty("user.dir");
System.out.print("exe path at ="+exePath .replace("\\", "/"));
}catch (Exception e){
System.out.println("Some Exception ="+e.getMessage());
}
}
}
输出:
D:\vinay_hegde\javaexample>javac GetExePath.jav
D:\vinay_hegde\javaexample>java GetExePath
exe path at = D:\vinay_hegde\javaexample
如前所述,您将使用:
System.getProperty(“user.dir”);
它将为您提供用户工作目录
输出为:
C:\Foo> java -jar bar\baz.jar
Directory: C:\Foo
因为这不适用于您,所以问题必须来自Launch4J
当你开始启动4j时,在选项Basic->Change Dir上有一个小点,移除它,你会很高兴的
以下是我的Launch4J配置,仅供参考:
<?xml version="1.0" encoding="UTF-8"?>
<launch4jConfig>
<dontWrapJar>false</dontWrapJar>
<headerType>console</headerType>
<jar>C:\Foo\bar\baz.jar</jar>
<outfile>C:\Foo\bar\baz.exe</outfile>
<errTitle></errTitle>
<cmdLine></cmdLine>
<chdir></chdir>
<priority>normal</priority>
<downloadUrl>http://java.com/download</downloadUrl>
<supportUrl></supportUrl>
<stayAlive>false</stayAlive>
<restartOnCrash>false</restartOnCrash>
<manifest></manifest>
<icon></icon>
<jre>
<path></path>
<bundledJre64Bit>false</bundledJre64Bit>
<bundledJreAsFallback>false</bundledJreAsFallback>
<minVersion>1.6</minVersion>
<maxVersion></maxVersion>
<jdkPreference>preferJre</jdkPreference>
<runtimeBits>64/32</runtimeBits>
</jre>
</launch4jConfig>
并将此bat包装到exe文件中 这些答案只会告诉我可执行文件的位置,而不是cmd的执行位置;System.out.println(f.getAbsolutePath());它仍然只能从可执行文件所在的目录中获取信息,而不能从cmd执行该文件的目录中获取信息。请参阅答案,我认为转换为.exe文件可能是您遇到问题的原因,因为它可能会更改当前目录,而这正是您获得令人惊讶的结果的原因。如果您使用的是java.jar而不是exe文件,那么获取cmd目录是否会像预期的那样工作?对不起,它提供的是可执行文件的目录,而不是执行文件的cmd目录。嗯,与我得到的不同。也许这就是我再次创建.exe文件的方式,它给出了可执行文件的目录,而不是执行文件时cmd的目录。@Sam也许你的*.exe是你问题的一部分。你可以用jar文件试试。如果你需要一个exe,不要将jar包装在exe中,只需将exe用作启动器(我认为Launch4j有一个选项),你的问题可能会得到解决。好的,我会尝试一下,thxI在不包装的情况下转换它,但我仍然得到.exe文件的目录,而不是cmd当前所在的目录,当我执行.exe文件时,尝试调用jar而不是exe,这样我们可以缩小错误范围。
java -jar bar\baz.jar