Prog.jar文件中的prog.java和prog.class - 如何轻松更新此代码?

时间:2010-12-03 17:30:02

标签: java class jar

背景故事:
很久以前,在恐龙出现之前,有一个承包商编写了一个小型Java程序,它做了一些东西,并将一些东西打印到屏幕上。

目前:这里没有人比我更了解Java - 而且我流利。

该程序有效,但我们需要在屏幕上提供更多信息。从可用的文档中,我想我知道如何去做,我肯定知道如何打印东西,因为它只是使用System.out.println()

我有一个.jar文件,我99%确定正在加载/使用该文件,其中包含与.java个文件匹配的.class个文件。

是否有一种简单的方法(以及我如何)稍微修改其中一个.java文件,并“编译”新版本以替换当前匹配的.class文件.jar

我当然可以打开并阅读java源文件,但是不记得将java变成“类”文件的程序,特别是不确定我是否可以删除生成的{{1}将文件作为替换文件放入.class文件中。

2 个答案:

答案 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