【发布时间】:2016-12-26 18:58:50
【问题描述】:
这感觉像是一个绝对的新手问题,但我对什么应该是一个基本的问题非常感兴趣。
我正在用 Java 编写一个简单的桌面应用程序。 (实际上是 Scala,但让它过去吧。)它针对 Windows 机器。我想打包它并让它在不创建安装程序或弄乱 Windows 注册表的情况下运行。我想要一个用户可以找到和编辑的配置文件,以便自定义设置。 (例如,以 SublimeText 的用户偏好的方式。)
我设想以下结构:
my-application/
|- bin/
|- myApp.class (or myApp.jar, if you prefer)
|- files/
|- config/
|- config.json
|- output/
|- output.xlsx
|-runMyApp.bat
在 Eclipse 中,相对路径倾向于解析为 myApplication/ 目录,但如果我从命令行运行应用程序,它们会解析为 -cp 参数。 (通常是bin/ 目录。)
我是不是太天真了?我是不是完全搞错了范式?
在我看来,能够始终如一地在可执行文件周围的文件系统中定位文件(资源)是一件基本的事情。
请帮忙!
【问题讨论】:
-
向我们展示您的代码。
-
路径是相对于运行程序的工作目录,而不是类路径。
-
为什么不将配置文件存储在用户的主目录中?在我看来,大多数原生 Windows 应用程序都是这样做的(通常在
Documents文件夹中,以便用户可以轻松找到它们,或者在隐藏的AppData文件夹中,如果用户通常不需要直接访问它们)。 -
如果我理解正确你的问题,你想传递一个 conf 文件,它将在 app jar 之外,这意味着如果用户没有注意你的 .readme 文件,他们可以把它在任何地方。那你为什么不用文件选择器放一个简单的傻表单,并在启动时提示用户,但在你的应用程序完全初始化之前,将配置文件传递给你。现在您可以保存用户首选项,每次开始之前您都会加载该文件,或者您可以每次都提示,当然还有您对验证规则或文件未找到等的自定义处理。
标签: java eclipse scala relative-path