【问题标题】:Packaging my project in Eclipse在 Eclipse 中打包我的项目
【发布时间】:2013-07-20 03:39:31
【问题描述】:

我有一个 Java swing 项目,需要在其他计算机上进行测试。我有一些类和一个存储登录信息的 sqlite 数据库。我也有一些 lib jars。该应用程序从用户那里获取信息并将其存储在 sqlite db 中,然后将数据推送到 Web。我想打包我的项目,以便使用我的项目的人只需双击可执行文件或 jar。

我尝试在 Eclipse 中导出到 Runnable Jar 文件,但这并没有给出预期的结果。在创建可运行 jar 并且我第一次运行它之后,它会在它旁边创建 sqlite db,并且不会连接到 Web 链接并发送信息。

如何正确打包我的数据? 这是我的文件夹结构 -


--src
----默认包
----休息包
----图片
--lib
--file.fcl
--db.sqlite

【问题讨论】:

  • 你没有提供足够的信息——你说“没有连接到网络链接”:它崩溃了吗?它会给出错误消息吗?您是否创建了日志文件或控制台输出以便可以看到来自代码的消息?看起来你可以打包项目了——它运行并创建了数据库——所以你所拥有的很可能是一个程序错误。我们 SO 可以帮助您找出具体的错误是什么,只要提供足够具体的信息,但如果没有信息,我们就无法做到。
  • 它在 Eclipse 中运行良好,没有任何错误。在创建可运行的 Jar 后,它会执行、询问用户信息并在任务栏中正常执行。 sqlite db 应该存在于 jar 中。它不应该创建一个。我项目的最后一步是将数据记录推送到 Web 应用程序的数据库中。在这种情况下,它不会因为我可以在我的本地主机中看到没有插入任何记录。 :(
  • 我从 cmd 执行它,发现它无法读取 FCL 文件。 fcl 文件是我使用过的软件包的一部分。它抛出错误 - 读取文件'file.fcl'时出错,无法加载文件'file.fcl'
  • 在您的原始帖子中,您说“...第一次运行它,它会在它旁边创建 sqlite db”;在评论中你说“sqlite db 应该存在于 jar 中。它不应该创建一个。”。所以我不明白它是什么,这并不重要。我也不知道您是否需要更多帮助——从命令行运行它并获得错误输出是一个不错的举措;现在您可以查找为什么您的程序可以(显然)在 eclipse 中运行但不能从 jar 中读取“file.fcl”。在某个地方有通往它的路径吗?您是否没有将其标记为包含在 jar 中的资源?
  • 当我运行 Jar 文件时,它会创建 sqlite db,但它不应该因为我希望它已经存在于 Jar 文件中。我试图生成一个 Runnable Jar 文件。这不要求包含文件。它只是要求启动配置,我在其中选择项目名称和具有 main() 的 java 文件。这是我的文件夹结构 >root >src >default package >rest package >images >lib >file.fcl >db.sqlite

标签: java eclipse exe packaging executable-jar


【解决方案1】:

任何时候你在 Eclipse 之外运行一个程序来改变项目文件夹结构中的任何文件,改变的文件是“不同步的”。要使事情恢复同步,请右键单击 Package Explorer 中的项目并选择“刷新”(您也可以在 Package Explorer 中选择项目并按 F5)。

如果您的代码正在创建数据库而不是使用现有的数据库,那么它建议我您的数据库位置是为您的 Eclipse 环境设置的,但不是针对一般情况。对于 java 应用程序,您必须知道(或设置)“当前目录”或“当前文件夹”——这是文件操作的默认文件夹,并从中设置相对文件路径。如果您当前的目录是“aaa”,并且您在“bbb/ccc/ddd/database.db”打开一个文件或数据库,那么“bbb”目录必须在“aaa”中,否则程序将找不到该文件.

要在不设置数据库位置等的情况下运行程序,您可能需要找到存储程序文件的目录并将其设置为当前目录。 This SO answer 表示您可以如何做到这一点。

【讨论】:

  • db.sqlite 和 file.fcl 就在根目录下。我在winrar打开jar,发现sqlite文件和fcl都不见了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-05
  • 2014-03-18
  • 1970-01-01
  • 2011-11-05
相关资源
最近更新 更多