Java 修改正在执行的Jar文件
朋友们好。我有一个简单的问题,我担心没有一个简单的解决方案,我需要关于如何继续的建议。我正在开发一个打包为JAR和可执行JAR的java应用程序,但它需要在执行期间修改一些JAR文件内容。在这个阶段,我遇到了一个问题,因为一些操作系统锁定了文件,防止写入 在应用程序退出时,用户必须看到jar文件的更新版本,尽管我可以非常灵活地了解如何实现这一点。一个干净高效的解决方案显然是可取的,但可移植性是唯一的硬要求 以下是我可以看到的解决问题的三种方法,请随意评论或建议他人Java 修改正在执行的Jar文件,java,file-io,jar,classloader,executable-jar,Java,File Io,Jar,Classloader,Executable Jar,朋友们好。我有一个简单的问题,我担心没有一个简单的解决方案,我需要关于如何继续的建议。我正在开发一个打包为JAR和可执行JAR的java应用程序,但它需要在执行期间修改一些JAR文件内容。在这个阶段,我遇到了一个问题,因为一些操作系统锁定了文件,防止写入 在应用程序退出时,用户必须看到jar文件的更新版本,尽管我可以非常灵活地了解如何实现这一点。一个干净高效的解决方案显然是可取的,但可移植性是唯一的硬要求 以下是我可以看到的解决问题的三种方法,请随意评论或建议他人 告诉Java解锁JAR文件以便
Runtime.getRuntime().exec()
)。该实用程序将等待锁离开原始的、未修改的JAR,然后执行其业务并退出
对于用户来说,JAR文件似乎会在退出时更新(或者足够接近!)。我真的认为您的方法是错误的。这根本不适合默认的部署java的方法。您修改的文件只需保存到某个db或xml文件中—这是唯一明智的方法
任何事情都只是“迎风而战”-您可能会遇到一些困难,无法让它正常工作,但它最终会咬到您或客户。您能说明一下为什么需要在执行过程中修改jar文件吗?@pinkynobrain您的想法是老派的蚂蚁方式,我建议您阅读maven by example free电子书,您会发现您的建议毫无意义。。我很抱歉不是想冒犯你,只是想帮助你。我们不是都去过吗?你想实现什么-一个自我更新的应用程序?@c0mrade你指的是什么?JAR文件中捆绑了几个包含用户信息的文件,用户在程序执行过程中添加信息,这些信息必须添加到他是JAR文件。因为应用程序的目的是要小并且易于传输,我真的想把它保持为一个JAR文件。嘿,thx作为你的答案,这肯定是另一个解决方案,尽管它仍然与我的选项3有相同的问题。我想使用exec(“java”)是相当可移植的,我只是希望有一种真正独立于平台的方式从一个Java应用程序衍生出另一个Java应用程序。虽然Java比许多其他语言更独立于平台,但它在很多方面都不完美,而且在基于平台(如果它甚至需要不同-我认为“java”可以在unix和windows上工作,但不确定osx)。在实际调用之前,如何以平台
独立的方式获取执行Runtime.getRuntime().exec()
所需的所有信息。我认为System.getProperties()
方法有一些有用的信息。很抱歉,您不喜欢这个答案。关于重命名、锁定等,我只是表达了我的观点,您试图强制一个不适合问题的解决方案。因此,这将是一个注释,而不是答案