Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何导出包含sqlite数据库的jar?_Java_Eclipse_Sqlite_Deployment_Jar - Fatal编程技术网

Java 如何导出包含sqlite数据库的jar?

Java 如何导出包含sqlite数据库的jar?,java,eclipse,sqlite,deployment,jar,Java,Eclipse,Sqlite,Deployment,Jar,我有一个程序,我想分发,没有给出源代码或使用的数据库。它是一个sqlite数据库,不需要更新。我尝试使用EclipseFATJAR并更改查找jar的位置,但当我运行该程序时,它只是在与jar相同的目录中创建一个空白数据库文件。我只想要一个可以分发的文件 根据被认为相关的评论: ..使用TXT文件测试后包含XML 我会的,但是这个数据库有80000行长,有4列。随着程序的更新,它只会变得更大,而不是在运行时 把它放在服务器上,并有一个web界面 我真的想避免使用任何互联网连接。如果有人想反编译这

我有一个程序,我想分发,没有给出源代码或使用的数据库。它是一个sqlite数据库,不需要更新。我尝试使用EclipseFATJAR并更改查找jar的位置,但当我运行该程序时,它只是在与jar相同的目录中创建一个空白数据库文件。我只想要一个可以分发的文件


根据被认为相关的评论:

..使用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