为使用C#,C ++,VB等编写的Windows应用程序定义了“运行EXE的路径”。
- Windows上的Java应用程序不是“EXE-Applications”,而是启动类文件或jar文件而不是EXE文件。 因此,对于Java应用程序,术语“ExePath”应该转换为“MainClassPath”或“JarPath”。
- 在某些情况下,程序员需要知道应用程序jar或MainClass的物理路径。 (例如,当您使用相同的类和相同的方法在java和c#中开发大型项目时)
- 感谢其他stackoverflow用户,这句话完成了这项工作:
String exePath = URLDecoder.decode(this.getClass().getProtectionDomain().getCodeSource().getLocation().getPath(), "UTF-8")
如果我将相同的代码放入任何helper / utils jar-library中,那么它将返回helperlib.jar的路径,它不会返回我的MainClass / AppJar的路径!
-
所以最终的getExePath()
辅助方法应该类似于:
return(URLDecoder.decode(Thread.currentThread().getStartingThread().getMainClass().getProtectionDomain().getCodeSource().getLocation().getPath(), "UTF-8"));
(如果在java中只有像getStartingThread()
和getMainClass()
这样的方法...)
-
答案 0 :(得分:0)
如果我说得对,只需将带有所需类参数的方法放入helperlib-class ......
e.g:
public static String getExePath(Object main) {
String path = "";
try {
path = URLDecoder.decode(main.getClass().getProtectionDomain().getCodeSource().getLocation().getPath(), "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return path;
}
然后你可以打电话给它,例如从你的主罐里面带参数'this'...
System.out.println("AppPath:\n" + helperlib.getExePath(this));
...并且您获得了参数
中指定的类的路径希望对我糟糕的英语有所帮助和抱歉......;)