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

时间:2011-06-04 10:21:22

标签: java windows linux macos jar

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

2 个答案:

答案 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或可执行文件可以工作。