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

标签 java windows linux macos jar

我正在开发一个 Java 应用程序,它当然应该通过 USB 内存棒在主要操作系统上运行。对于 Mac 用户,我将 jar(应用程序和更新程序)捆绑到 Apple .app 程序中。现在:让 jar 相互启动并使用棒上的相对文件夹路径的最佳方法是什么。我问是因为我注意到在 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 文件。

当您知道位置时,您可以从那里导航。

关于Windows、Mac 和 Linux (Unix) 上的 Java 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6236157/

相关文章:

c++ - Boost 二进制文件读取错误 unsupported version

linux - 使用 IP 队列时出现 Netlink 错误

java - 使用 Java 将 HTTP post 发送到 Web 服务器

java - 如果查询中没有这样的键,如何关闭 AWS 连接

java - 从 Java 角度到 Python 的基本对象实例化

sql-server - 其他用户帐户安装的本地SQL Server,如何从新用户帐户访问

windows - CreateProcess 能够执行批处理文件,但文档说明相反

java - 给定一棵二叉树,找出同一层的2个节点之间的水平距离,同时计算该节点不存在的位置

regex - Windows 批处理文件中的正则表达式

linux - "RUN ./configure"=> 在 Docker 中找不到,"RUN cd srcdir && chmod +x ./configure"成功后