Java 检测.app和.exe文件位置的最佳方法

Java 检测.app和.exe文件位置的最佳方法,java,minecraft,Java,Minecraft,我用Java编写了一个程序,可以很容易地在Minecraft的不同版本之间进行设置和切换。这个程序已经完成了很多,但是我面临着一个无法找到解决方案的问题。我在程序中有一个按钮,允许您通过运行时对象启动Minecraft。这在我的计算机上运行良好,因为我知道我的.app或.exe文件在哪里(取决于操作系统)。但我不知道该文件在其他人的计算机上的位置。我已经想到了一些解决这个问题的方法,但似乎没有一种是可行的 一个想法是通过文件选择器提示用户定位文件,然后缓存该文件。这会起作用,但不是很优雅,特别是

我用Java编写了一个程序,可以很容易地在Minecraft的不同版本之间进行设置和切换。这个程序已经完成了很多,但是我面临着一个无法找到解决方案的问题。我在程序中有一个按钮,允许您通过运行时对象启动Minecraft。这在我的计算机上运行良好,因为我知道我的.app或.exe文件在哪里(取决于操作系统)。但我不知道该文件在其他人的计算机上的位置。我已经想到了一些解决这个问题的方法,但似乎没有一种是可行的

一个想法是通过文件选择器提示用户定位文件,然后缓存该文件。这会起作用,但不是很优雅,特别是对于不太懂计算机的用户

我还考虑将.app和.exe文件与我的应用程序捆绑在一起,但这带来了更多的问题。首先,我不知道在我的应用程序中分发该文件是否合法。此外,它还将改变我必须分发应用程序的方式,使其包含某种安装程序来设置所有内容


有谁对如何处理这个问题有更好的想法吗?

我认为你至少有三个选择

  • 您可以使用配置系统存储程序的位置,并提示用户/提供配置API来设置值。这很好,而且做起来相当简单
  • 您可以搜索众所周知的位置,如果找不到,则提示用户(并希望存储结果)。这是可以的,但它取决于许多因素,包括操作系统和程序实际加载在“公共”位置,并以“公共”方式命名
  • 搜索硬盘。这很糟糕,因为它很耗时,而且应用程序可能不存在于您正在搜索的驱动器上……搜索所有可用位置可能会导致您进入网络驱动器,而网络驱动器的速度会更慢……如果找不到,会提示用户
  • 鉴于几乎所有的解决方案都无法“提示用户”,我可能会使用1和2的组合。允许用户指定位置,如果用户不指定,则搜索一些常见的已知位置,如果仍然找不到,则提示用户(希望保存该值以供重用)


    我喜欢渐进式失败的想法。选项2是我(尴尬地)没有想到的,是个好主意。我要试一试,非常感谢你的投入。