Java 如何导出包含sqlite数据库的jar?
我有一个程序,我想分发,没有给出源代码或使用的数据库。它是一个sqlite数据库,不需要更新。我尝试使用EclipseFATJAR并更改查找jar的位置,但当我运行该程序时,它只是在与jar相同的目录中创建一个空白数据库文件。我只想要一个可以分发的文件Java 如何导出包含sqlite数据库的jar?,java,eclipse,sqlite,deployment,jar,Java,Eclipse,Sqlite,Deployment,Jar,我有一个程序,我想分发,没有给出源代码或使用的数据库。它是一个sqlite数据库,不需要更新。我尝试使用EclipseFATJAR并更改查找jar的位置,但当我运行该程序时,它只是在与jar相同的目录中创建一个空白数据库文件。我只想要一个可以分发的文件 根据被认为相关的评论: ..使用TXT文件测试后包含XML 我会的,但是这个数据库有80000行长,有4列。随着程序的更新,它只会变得更大,而不是在运行时 把它放在服务器上,并有一个web界面 我真的想避免使用任何互联网连接。如果有人想反编译这
根据被认为相关的评论: ..使用TXT文件测试后包含XML 我会的,但是这个数据库有80000行长,有4列。随着程序的更新,它只会变得更大,而不是在运行时 把它放在服务器上,并有一个web界面
我真的想避免使用任何互联网连接。如果有人想反编译这个罐子,我不在乎。我只想让它通过双击工作,不需要额外的文件。不知道是否可以使用SQLite数据库来实现这一点,但Derby支持jar:path:
或者,在启动时将数据库从jar提取到文件系统并指向那里。不知道是否可以使用SQLite数据库执行此操作,但Derby支持jar:path: 或者,在启动时将数据库从jar提取到文件系统并指向那里 (部署)…可用性和整洁对我来说很重要 这让我认为,真正需要的是一个跨平台的安装程序。用户获取一个文件并双击它,“按照提示操作”(如果需要任何提示)&它提取应用程序。随时可用 它可能会创建多个文件,但最终用户基本上看不到这些文件。”“不在现场就是不在头脑中” 我想避免使用任何互联网连接 我建议你重新考虑一下。这个应用程序有多大尺寸。什么时候来?几兆字节?在这个互联网流量大的时代,这算不了什么。这是一个2分钟的YouTube 具有internet连接的设备与具有(例如)CD/DVD驱动器以加载软件的机器的比率也在变化。现在,能够运行J2SE的计算机连接到internet的数量要多于拥有驱动器的计算机。我有一台台式PC和一台上网本,都可以运行J2SE。两者都有互联网连接,但只有台式电脑有CD/DVD驱动器 如果是这样的话(说到我的观点),请考虑部署该应用程序。和DB。非常用户友好,具有良好的桌面集成
大约50mb,但问题是并非所有终端用户都能随时访问互联网。可以通过internet分发应用程序,但我不想依靠它访问数据库或同时加载应用程序 这是没有必要的。JWS在本地缓存应用程序资源。它将检查服务器是否有更新的JAR,但可以配置为允许从缓存副本启动,即使此时没有internet连接。要配置的启动文件元素如下所示:
<update check="always" policy="prompt-run">
(部署)…可用性和整洁对我来说很重要
这让我认为,真正需要的是一个跨平台的安装程序。用户获取一个文件并双击它,“按照提示操作”(如果需要任何提示)&它提取应用程序。随时可用
它可能会创建多个文件,但最终用户基本上看不到这些文件。”“不在现场就是不在头脑中”
我想避免使用任何互联网连接
我建议你重新考虑一下。这个应用程序有多大尺寸。什么时候来?几兆字节?在这个互联网流量大的时代,这算不了什么。这是一个2分钟的YouTube
具有internet连接的设备与具有(例如)CD/DVD驱动器以加载软件的机器的比率也在变化。现在,能够运行J2SE的计算机连接到internet的数量要多于拥有驱动器的计算机。我有一台台式PC和一台上网本,都可以运行J2SE。两者都有互联网连接,但只有台式电脑有CD/DVD驱动器
如果是这样的话(说到我的观点),请考虑部署该应用程序。和DB。非常用户友好,具有良好的桌面集成
大约50mb,但问题是并非所有终端用户都能随时访问互联网。可以通过internet分发应用程序,但我不想依靠它访问数据库或同时加载应用程序 这是没有必要的。JWS在本地缓存应用程序资源。它将检查服务器是否有更新的JAR,但可以配置为允许从缓存副本启动,即使此时没有internet连接。要配置的启动文件元素如下所示:
<update check="always" policy="prompt-run">
我认为您可以执行以下操作:
- 在类路径上打包数据库
- 加载应用程序时,将数据库复制到某个临时目录(如/tmp)
- 指示sqlite从那里读取它(通过设置JDBCURL)
- 添加一个jvm钩子,在应用程序关闭时删除该文件
使用
getClass().getResourceAsStream()
获取类路径上文件的引用。我认为您可以执行以下操作:
- 在类路径上打包数据库
- 加载应用程序时,将数据库复制到某个临时目录(如/tmp)
- 指示sqlite从那里读取它(通过设置JDBCURL)
- 添加一个jvm钩子,在应用程序关闭时删除该文件
使用
getClass().getResourceAsStream()
获取类路径上文件的引用。我做了类似的操作,但最后我选择在测试后包含一个XML