我创建了一个基本上是 MySQL 数据库接口的 Java 应用程序。它有助于组织和跟踪数据。我们在我的工作场所使用它没有问题 - 我已经从 Eclipse 将它导出为一个 jar 文件,并给每个人一个这个 jar 文件的副本。
现在我们想让这个软件可用于其他工作场所。问题是数据库的 URL、用户名和密码在应用程序中是硬编码的。我想为它创建一个设置过程,这样当有人下载它时,他们会通过一个向导下载 MySQL 并在他们选择的任何地方设置数据库。然后,此人可以将 jar 文件分发给他们工作场所的每个人,而无需他们进行设置,因为每个人都将访问同一个数据库。
这个过程必须以某种方式保存数据库 URL、用户名和密码,以便工作场所的人可以从任何计算机运行 jar。这让我认为它们应该保存在 jar 中......是我需要的属性文件吗?我可以在 jar 中放置一个属性文件并允许在设置过程中对其进行编辑吗?
非常感谢任何指导,我对此很陌生!
==================================================== =================================
编辑:我想我现在要做的是让用户安装 MySQL 并自己设置他们的数据库。正如下面的答案所建议的那样,拥有这个自动可能比它的价值更麻烦,因为我必须处理每个人的不同平台、设置数据库的偏好、安全问题等。一旦他们这样做,他们只会下载我的jar 文件。
我在 jar 文件中添加了一个属性文件来存储数据库 URL、用户名和密码。这个文件最初是空的,所以当用户第一次运行jar时,程序会尝试访问properties文件,看到它是空的,并提示用户输入这个信息。然后它将从 jar 中提取属性文件,编辑它们的信息,并将属性文件放回 jar 中。然后,该人应该能够将更新的 jar 分发给他们的同事,并且他们都应该能够打开它而无需提供该信息。我的这部分几乎可以工作了。我还将添加“重新配置”程序的能力——以防用户移动他们的数据库——通过调用相同的方法(他们将再次必须分发新版本的程序)。
接下来我想尝试通过加密或混淆代码以某种方式保护属性文件(尽管我认为这仅适用于类文件而不适用于文本文件......?)。我担心的是,工作场所的任何人都可以将其解压缩并打开属性文件,然后使用 URL、用户名和密码自行访问数据库并造成损坏。理想情况下,除了程序本身之外,没有人能够解压它。
如果有人对我的方法有其他疑虑,请告诉我!