运行 .jar 与具体。小路
Run .jar with Specific. path
我想从不同的目录运行 运行 当我使用java -jar PATH_TO_FILE
时.jar 将在我运行 命令所在的目录中执行。我怎么能说,jar 将在 .jar 所在的目录中启动。
你不能;无论如何,不使用命令行开关。您有 3 种广泛的策略来解决由此引起的任何疾病:
修复错误
显然,您的应用程序是在假设 'current working directory' 是 jar 文件的情况下编写的。这是 java 代码中的一个常见错误,需要访问例如png
图像文件,用于渲染,例如一个 GUI,或者用一些静态信息解析一个 txt 文件。
解决方法是一开始就不要编写该代码 - 将只读资源与您的应用程序一起存储的正确机制是将它们放在相同的位置 类:Inside jars, by your构建系统。将它们放在 src/main/resources
中(假设您正在使用 maven 或类似的东西),并使用 YourClass.class.getResource("open.png")
来阅读它们,而不是 new File
.
停止使用您的 jar 所在的位置作为数据存储
或者,如果它是 read/write 文件,那么 ose 不应该存在于你的 jar 文件所在的位置:那是一种 windows 主义,并且是 90 年代早期 windows 主义:不应假定用户对可执行文件所在的位置具有写入权限。此类文件的正确位置是用户主目录中的某处(可能是该目录的子目录),您可以在 java 和 System.getProperty("user.home")
.
中请求
编写脚本
如果必须,请编写批处理脚本或 shell 执行此操作的脚本。 posix 中有很多方法(例如,linux、mac os 等)可以在另一个目录中启动进程。 windows 上的 PowerShell 脚本可以完成类似的任务。这很难看(并且 OS 依赖),所以前两个选项要好得多。
我想从不同的目录运行 运行 当我使用java -jar PATH_TO_FILE
时.jar 将在我运行 命令所在的目录中执行。我怎么能说,jar 将在 .jar 所在的目录中启动。
你不能;无论如何,不使用命令行开关。您有 3 种广泛的策略来解决由此引起的任何疾病:
修复错误
显然,您的应用程序是在假设 'current working directory' 是 jar 文件的情况下编写的。这是 java 代码中的一个常见错误,需要访问例如png
图像文件,用于渲染,例如一个 GUI,或者用一些静态信息解析一个 txt 文件。
解决方法是一开始就不要编写该代码 - 将只读资源与您的应用程序一起存储的正确机制是将它们放在相同的位置 类:Inside jars, by your构建系统。将它们放在 src/main/resources
中(假设您正在使用 maven 或类似的东西),并使用 YourClass.class.getResource("open.png")
来阅读它们,而不是 new File
.
停止使用您的 jar 所在的位置作为数据存储
或者,如果它是 read/write 文件,那么 ose 不应该存在于你的 jar 文件所在的位置:那是一种 windows 主义,并且是 90 年代早期 windows 主义:不应假定用户对可执行文件所在的位置具有写入权限。此类文件的正确位置是用户主目录中的某处(可能是该目录的子目录),您可以在 java 和 System.getProperty("user.home")
.
编写脚本
如果必须,请编写批处理脚本或 shell 执行此操作的脚本。 posix 中有很多方法(例如,linux、mac os 等)可以在另一个目录中启动进程。 windows 上的 PowerShell 脚本可以完成类似的任务。这很难看(并且 OS 依赖),所以前两个选项要好得多。