Windows、Mac和Linux(Unix)上的Java程序



我正在开发一款Java应用程序,它当然应该通过usb棒在主要操作系统上运行。对于Mac用户,我将jar(应用程序和更新程序)捆绑到Apple.App程序中。现在:让罐子相互启动并使用棒上的相对文件夹路径的最佳方法是什么。我之所以这么问,是因为我注意到在Mac上,.app文件夹是启动的文件(而不是里面的jar),因此父目录是存储我所有文件的工作目录。在Windows和Linux上,它只是一些MyApp.app文件夹,文件将在里面。通过代码切换案例和路径真的是解决这个问题的唯一方法吗?感谢

您可以向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文件。

当你知道位置后,你就可以从那里导航了。

最好的选择是为每个操作系统创建启动器,并从这些启动器调用JVM来运行jar。对于Linux来说,制作一个shell脚本,在Mac上,它将是.app(或shell脚本),而在Windows上,.bat或可执行文件将起作用。

最新更新