你好堆栈溢出的朋友。我有一个简单的问题,我担心没有简单的解决方案,我需要有关如何进行的建议。我正在开发一个打包为可执行JAR的Java应用程序,但它需要在执行过程中修改其某些JAR文件内容。在此阶段,我遇到了问题,因为某些操作系统锁定了文件,从而阻止了对该文件的写入。
用户必须在应用程序退出时看到jar文件的更新版本,这一点非常重要,尽管我可以非常灵活地实现这一目标。干净,高效的解决方案显然是可取的,但可移植性是唯一的硬性要求。
以下是我可以看到的三种解决问题的方法,可以随时对其发表评论或提出建议。
我知道这是一个奇怪的问题,但是任何帮助都将不胜感激。
一种选择:
让程序编写JAR文件的修改后的 副本 。
在JAR文件中包含具有实用程序的第二个JAR,该实用程序在执行时会删除原始JAR文件,并重命名修改后的副本以匹配原始副本。
当您的程序退出(并进行了更改)时,请提取该实用程序并在其自己的JVM中启动(使用Runtime.getRuntime().exec()
)。该实用程序将等待锁脱离原始的,未修改的JAR,然后开始其业务并退出。
对用户而言,JAR文件似乎在退出时会更新(或足够接近!)。
问题内容: 我想修改jar中的文件。是否可以在我的应用程序中执行此操作而无需提取并重新创建? 我要修改的文件是配置文件,主要是基于xml的文件。 我感兴趣的原因是,如果我将其解压缩,则无法再次创建.exe文件。 问题答案: 我想修改中的文件。是否可以在我的应用程序中执行此操作而无需提取并重新创建? 我要修改的文件是配置文件,主要是基于的文件。 我感兴趣的原因是,如果我将其解压缩,则你可以将u选项用
问题内容: 我有一个jar文件,它在html文件中用作applet。我想修改jar文件的内容并重建jar文件,以便html与新的jar文件配合使用。我怎样才能做到这一点?? 我已经尝试使用7zip解压缩,并修改了源代码并创建了新的jar。但是当我在html中使用它时会显示一些java.lang.Classnotfound错误 问题答案: 您可以根据需要解压缩或重新解压缩类和源文件。 解开 罐 ht
问题内容: 我试图弄清楚如何引用python文件,以便可以在Java GUI Jar中执行它。它必须是一个可移植的解决方案,因此使用绝对路径对我不起作用。我在下面列出了我的项目结构,并包括了有关如何尝试执行python脚本的代码。感谢您提供的任何帮助! 问题答案: 使用开头的文件路径意味着您要从文件系统的根目录开始。 您的代码为我工作,只需删除该斜杠即可: 放置错误文件没有显示错误的原因是因为此J
我提取了一个包含xml、java类等的可执行jar文件。实际上,这个可执行jar文件是一个具有依赖关系的库。我需要修改这个库中一个类文件中的一行代码。我已经成功地编辑了类文件,现在我想把它重新打包到可执行的jar中。如何做到这一点。