我有一个我想要分发的程序,而不使用源代码或数据库。它是一个sqlite数据库,不需要更新。我尝试使用eclipse fatjar并改变在哪里寻找jar,但是当我运行程序时,它只是在与jar相同的目录中创建一个空白数据库文件。我只想要一个可以分发的文件。
从认为相关的评论:
..在使用TXT文件测试后包含XML。
我愿意,但这个数据库长80,000行,有4列。只有在程序更新时才会变大,而不是在运行时。
将它放在服务器上,并有一个Web界面。
我想避免真正使用任何互联网连接。如果有人想要反编译jar,无论我不关心。我只是想通过双击工作,并且没有额外的文件。
答案 0 :(得分:2)
(部署)..可用性和整洁对我来说很重要
这让我觉得真正需要的是一个跨平台的安装程序。用户获得一个文件并双击它,“按照提示”(如果需要任何提示)&它提取应用程序。准备启用。
它可能会创建多个文件,但这对最终用户来说基本上是不可见的。 “不在网站之外”。
我想避免使用任何互联网连接..
我建议你重新考虑一下。该应用程序的大小。 Jar'd来的时候?几兆字节?这在互联网流量的这个时代并不算什么。这是一个2分钟的YouTube。
具有互联网连接的设备与具有(例如)CD / DVD驱动器以加载软件的机器的比率也在变化。它正处于能够运行J2SE的更多机器具有互联网连接而不是驱动器的时代。我有一台桌面PC和一台可以运行J2SE的上网本。两者都有互联网连接,但只有台式电脑有CD / DVD驱动器。
如果是这种情况(说到我的观点),请Java Web Start部署应用程序。和DB。非常用户友好,具有良好的桌面集成。
大约50mb,但问题并非所有最终用户都可以随时访问互联网。分发应用程序可以通过互联网完成,但我不想依赖它来访问数据库或一起加载应用程序。
这不是必要的。 JWS在本地缓存应用程序资源。 将检查服务器是否有更新的Jars,但可以配置为允许从缓存副本启动,即使此时没有Internet连接也是如此。要配置的启动文件元素如下所示:
<update check="always" policy="prompt-run">
答案 1 :(得分:1)
不知道是否可以使用SQLite数据库执行此操作,但Derby支持jar:paths:http://db.apache.org/derby/docs/dev/devguide/cdevdvlp17453.html
或者,在启动时将数据库从jar提取到文件系统并指向那里。
答案 2 :(得分:1)
我认为你可以做到以下几点:
这应该像魅力一样。
提示:
使用getClass().getResourceAsStream();
获取类路径上文件的引用。