背景故事:
很久以前,在恐龙出现之前,有一个承包商编写了一个小型Java程序,它做了一些东西,并将一些东西打印到屏幕上。
目前:这里没有人比我更了解Java - 而且我不流利。
该程序有效,但我们需要在屏幕上提供更多信息。从可用的文档中,我想我知道如何去做,我肯定知道如何打印东西,因为它只是使用System.out.println()
。
我有一个.jar
文件,我99%确定正在加载/使用该文件,其中包含与.java
个文件匹配的.class
个文件。
是否有一种简单的方法(以及我如何)稍微修改其中一个.java
文件,并“编译”新版本以替换当前匹配的.class
文件.jar
?
我当然可以打开并阅读java源文件,但是不记得将java变成“类”文件的程序,特别是不确定我是否可以删除生成的{{1}将文件作为替换文件放入.class
文件中。
答案 0 :(得分:0)
在基础层面,javac是编译器;这将生成.class文件。还有一个“jar”命令将重新生成您的jar文件。根据依赖项的数量,可以快速复杂化。您只需键入“javac”和“jar”(无引号)即可运行args。另一种选择是设置一个ant构建脚本......
所以你可以做一些事情(假设是Windows操作系统):
javac -cp%MY_CLS_PTH%* .java
其中MY_CLS_PTH是任何依赖类的位置。如果你有一个包结构,这会变得有点复杂。
jar -cvf。\ my_class_dir MyJarFile.jar 其中my_class_dir是包含.class文件的目录。
我认为这是对的(我自己没有运行)但这应该是关于基础...
编辑:有一种方法可以将单个.class文件添加/重新添加到现有的jar文件中。查看“jar”命令的用法,看起来像“-u”将更新它(当然你必须传入.class文件)。还要记住,在这些类中有任何包结构,您需要该目录结构,并通过该dir结构引用该类。 (希望很清楚......)
答案 1 :(得分:0)
将 myclass.class 添加到 myjar.jar 中的顶级目录:
jar uf myjar.jar myclass.class
将 myclass.class 添加到 myjar.jar 中的 subdir 目录:
jar uf myjar.jar -C subdir myclass.class
将版本属性添加到 myjar.jar 的清单中
首先创建一个包含行Version: "X.Y.Z"
的文件 somefile ,然后
jar umf somefile myjar.jar