prog.jar文件中的prog.java和prog.class-如何轻松更新此代码?
背景故事:prog.jar文件中的prog.java和prog.class-如何轻松更新此代码?,java,class,jar,Java,Class,Jar,背景故事: 很久以前,在恐龙出现之前,有一个承包商编写了一个小型Java程序,它可以做一些事情,并将一些事情打印到屏幕上 当前:除了我之外,这里没有人对Java了解得太多,而且我也不太流利 这个程序可以运行,但我们需要的只是屏幕上多一点信息。从可用的文档中,我想我知道如何进行这项工作,而且我肯定知道如何打印东西,因为这只是使用System.out.println()实现的 我有一个.jar文件,我99%确定该文件正在加载/使用中,其中包含与其中每个.class文件匹配的.java文件 是否有一种
很久以前,在恐龙出现之前,有一个承包商编写了一个小型Java程序,它可以做一些事情,并将一些事情打印到屏幕上 当前:除了我之外,这里没有人对Java了解得太多,而且我也不太流利 这个程序可以运行,但我们需要的只是屏幕上多一点信息。从可用的文档中,我想我知道如何进行这项工作,而且我肯定知道如何打印东西,因为这只是使用
System.out.println()
实现的
我有一个.jar
文件,我99%确定该文件正在加载/使用中,其中包含与其中每个.class
文件匹配的.java
文件
是否有一种简单的方法(以及如何)稍微修改.java
文件之一,并“编译”新版本以替换.jar
中当前匹配的.class
文件?
当然,我能够打开并读取java源文件,但不记得如何将java转换为“类”文件,尤其不确定是否可以将生成的
.class
文件替换为.jar
文件 在基本层面上,javac是编译器;这将生成.class文件。还有一个“jar”命令将重新生成jar文件。根据依赖项的数量,这可能会很快变得复杂。您只需键入“javac”和“jar”(不带引号)就可以让args运行它。另一个选项是设置ant构建脚本
因此,您可以执行以下操作(假设使用windows操作系统):
javac-cp%MY\u CLS\u PTH%*.java其中MY_CLS_PTH是任何依赖类所在的位置。如果你有一个包结构,这会变得更复杂一些 jar-cvf.\my\u class\u dir MyJarFile.jar 其中my_class_dir是包含.class文件的目录 我认为这是正确的(我自己没有运行),但这应该是最基本的 编辑:有一种方法可以将单个.class文件添加/重新添加到现有的jar文件中。查看“jar”命令的用法,看起来“-u”将更新它(当然您必须传入.class文件)。还请记住,这些类中的任何包结构都需要该目录结构,并通过该目录结构引用该类。(希望这是清楚的…将myclass.class添加到myjar.jar中的顶级目录:
jar uf myjar.jar myclass.class
jar uf myjar.jar -C subdir myclass.class
将myclass.class添加到myjar.jar中的subdir目录:
jar uf myjar.jar myclass.class
jar uf myjar.jar -C subdir myclass.class
在myjar.jar的清单中添加版本属性:
jar uf myjar.jar myclass.class
jar uf myjar.jar -C subdir myclass.class
首先创建一个文件somefile,其中包含行Version:“X.Y.Z”
,然后
jar umf somefile myjar.jar
除了在我的source.java文件上运行
javac
时可能存在的依赖性问题外,生成的prog.class文件是否可以“放入”现有的jar文件中?请参见上文,因为我刚刚添加了它!我可以建议,如果这是你要做的“很多”,你可以考虑设置在NETBeaS或Eclipse或者为它编写一个Ant脚本。Apache有很多模板脚本,尽管你需要下载ant…Merky,我同意,但这应该是一次性的,直到我能正确设置。我将很快尝试我们的答案。在使用javac
命令时,我必须将现有的.jar
文件放在类路径上。在我的例子中,我用7zip打开了.jar
文件,并简单地用新文件替换了现有的.class
文件。这很管用。我看到一些注释说,这可以通过jar
命令来完成,但我想说的是,这种方法对我也很有效。