在运行时期间在jar中添加文件

时间:2011-07-20 14:20:38

标签: java swing sqlite

Project是创建exe文件。如果我们运行exe文件,它将打开一个管理页面(在Swing中设计)该页面包含浏览按钮,max install,max install sys和create build,同时单击我们需要从系统和该文件中选择一个exe文件的浏览按钮需要将其保存在jar文件的一个文件夹中。 maxinstall,max install sys值存储在SQL lite数据库中。此管理页面将仅首次打开,以便从管理员处获取条件。接下来如果我们运行exe文件,它必须检查maxinstall和所有参数,然后安装选定的exe文件。

我的问题是,我从我的java程序创建了jar。每次运行jar时,只打开(即)数据库文件的管理页面不会在jar中更新,但它在eclipse中工作正常。之后我需要创建jar到exe。

3 个答案:

答案 0 :(得分:3)

  

..可以在运行时提取jar,在提取的jar中添加addfile并在运行时创建一个新jar。?

大多数JRE会在Jars上放置文件锁。因此,在JRE运行时无法更新它们。检查user.home的子目录以查找资源的更改版本。如果找不到,请使用Jar中的那个。如果已更改,请将更改的数据保存到子目录。

根据主类的包名使用子目录,以帮助避免覆盖其他应用的资源。 (或其他应用程序。覆盖您的资源)。

答案 1 :(得分:1)

我认为我理解你的问题。您的应用程序将其状态存储在自己的jar文件中。您使用SQLite等事实并不重要。它适用于Eclipse,因为在这种情况下,类文件和资源不会打包到存档中,并且您的程序可以轻松地更改文件系统上的文件。

答案是:是的,您可以通过编程方式更改jar文件。 Jar只是一个拉链。您可以使用ZipInputStream,ZipOutputStream,JarInputStream,JarOutputStream来修改任何包含您自己的zip。

但由于太多原因,非常不推荐。正确的解决方案是将您的数据与您的应用程序分开。您必须将运行时数据存储在文件系统,数据库等上。例如,您可以在用户主目录中创建文件。它与平台无关。您还可以使用具有适用于所有平台的可移植实现的Preferences类。

这样做的另一个原因是你需要创建exe。好的,您可以更改jar文件但是一旦从jar创建了exe文件,就无法再更改它了。

答案 2 :(得分:0)

Jar文件不会在jar中识别,因为,一旦创建了可执行jar,它就会被锁定,所以你可以提取你的依赖jar并添加到你的可执行jar中。它会运行...