【发布时间】:2014-04-10 16:20:47
【问题描述】:
我正在使用带有数据库集成的 JavaFx 创建一个桌面应用程序。当我从 programfiles/sun/javadb 运行 Java DB 服务器时,它向我显示 ClassNotFound 异常,但是当我从 NetBeans IDE 运行时,它也可以工作。所以请告诉我如何让我的应用程序在没有 NetBeans IDE 的情况下运行。我也想创建它的exe。我们如何使用 JAR 嵌入数据库。在创建 exe 时。
【问题讨论】:
我正在使用带有数据库集成的 JavaFx 创建一个桌面应用程序。当我从 programfiles/sun/javadb 运行 Java DB 服务器时,它向我显示 ClassNotFound 异常,但是当我从 NetBeans IDE 运行时,它也可以工作。所以请告诉我如何让我的应用程序在没有 NetBeans IDE 的情况下运行。我也想创建它的exe。我们如何使用 JAR 嵌入数据库。在创建 exe 时。
【问题讨论】:
您需要在应用程序的 CLASSPATH 中包含 Derby jar 文件(至少是 derby.jar,可能还有其他一些文件)。
【讨论】:
我是 Eclipse 用户,所以我无法帮助您使用 Netbeans,但这里是如何在 Eclipse 中完成的:在这个解释中,我在 Java SE 中使用了 JPA(这是来自一个真实的项目,所以我希望能提供帮助)
首先将项目导出为jar:
单击文件 -> 导出 -> 并选择 Java/Runnable JAR 文件 -> 单击 下一个
-> Eclipse 会自动查找并选择您的 Main 类 + 选择您希望 ecrise 保存 JAR 文件的位置
-> 选择将所需的库打包到生成的 JAR 中 -> 点击完成。
接下来,我假设您手动创建数据库,假设 db 文件夹名为 finance。现在将db文件夹与JAR放在同一个文件夹中,我在我的这个项目中使用了JPA所以这里是persistence.xml
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="FinanPU" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>lite.money.entities.Category</class>
<!-- <shared-cache-mode>NONE</shared-cache-mode> -->
<properties>
<property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver" />
<property name="javax.persistence.jdbc.url" value="jdbc:derby:finance;" /> <!-- Derby -->
<property name="eclipselink.ddl-generation.output-mode" value="database" />
</properties>
</persistence-unit>
这一行:
<property name="javax.persistence.jdbc.url" value="jdbc:derby:finance;" />
如您所见,finance 是您的 DATABASE FOLDER 的路径,因为它是相对路径; db 驱动程序将在 JAR 存在的同一文件夹中搜索文件夹。
这也是我将 JavaDB 嵌入 JavaFX 应用程序的方式(当然是使用 JPA)。
【讨论】: