我正在开发一个Java应用程序,当然应该从usb stick上运行主要的操作系统。对于Mac用户,我将jar(App和更新程序)捆绑到Apple .app程序中。现在:让罐子相互启动并使用棒子上的相对文件夹路径的最佳方法是什么。我问,因为我注意到在Mac上,它就像.app文件夹是启动的文件(而不是内部的jar),因此父目录是我的所有文件都将被存储的工作目录。在Windows和Linux上,它只是一些MyApp.app文件夹,文件将在里面。 通过代码切换案例和路径真的是解决这个问题的唯一方法吗? 谢谢
答案 0 :(得分:2)
您可以向JVM询问给定类的物理位置。来自http://www.exampledepot.com/egs/java.lang/ClassOrigin.html:
// Get the location of this class
Class cls = this.getClass();
ProtectionDomain pDomain = cls.getProtectionDomain();
CodeSource cSource = pDomain.getCodeSource();
URL loc = cSource.getLocation(); // file:/c:/almanac14/examples/
这甚至适用于jar文件。
当您知道位置时,您可以从那里导航。
答案 1 :(得分:1)
最好的选择是为每个操作系统创建启动器,并从这些启动器调用JVM来运行jar。对于Linux制作shell脚本,在Mac上它将是.app(或shell脚本),在Windows上.bat或可执行文件可以工作。