如何将自己的.class添加到已编译的.jar文件中?

时间:2016-04-22 14:22:02

标签: java

我有一个.jar,我想将自己的.class添加到它并重新编译。我能在哪里做到吗?

1 个答案:

答案 0 :(得分:8)

是的,而且很简单(如果你已经有了.class文件 - 那么就没有重新编译了。)

(假设您已经有.class文件并且只想将其添加到.jar。如果您没有.class文件,则需要编写.java源文件并首先将其编译为.class使用javac)

Jar文件实际上是zip文件 - 您可以使用zip / unzip来创建和解压缩它们。

  1. 使用解压缩程序解压缩jar文件
  2. 将您的课程添加到解压缩目录(*)
  3. 再次
  4. 拉链(可能是另一个名字.jar)
  5. (*)在第2步中,您必须将您的.class文件放在正确的目录中 - 正确的意思是包名称您的类必须与.class文件所在的目录路径匹配,相对于.jar存档根目录

    例如,如果您的 My.class 定义它位于 com.nicky 包中,则必须在 com / nicky / My.class中找到它(其中com是归档根目录中的目录)。如果My.class没有包,则它们必须位于存档根目录中。

    不需要重新编译 - Java确实在运行时动态链接 - 如果程序的其余部分需要使用类 com.nicky.My ,它将成功完成如果类文件位于.jar文件中的正确位置。

    使用虚拟机的 classpath 参数( java -cp a.jar:b.jar:... )告诉java进程在哪里查看对于类 - 如果将类打包在一个单独的.jar文件中会更有意义..

    - 编辑1 /回复您的评论: 如果您正在编写新的.java文件,则需要首先使用jdk附带的 javac 命令行编译器将其编译为.class。

    每个Java类都属于一个包,它通常在.java源文件的第一行中声明。包名必须与类的目录路径位置匹配(如上例所示),.java源文件(编译成功)和.class文件(动态加载/运行成功)。

    您还可以下载并使用Java IDE(例如http://www.eclipse.org/downloads/packages/eclipse-ide-java-developers/mars2)来创建.class文件。在Eclipse中创建一个新的Java项目,编写类源代码,单击构建(如果它已经不自动构建),然后使用文件资源管理器从磁盘上的项目的'target'目录中获取.class文件

    如果您的新.java类依赖于.jar中的类,您尝试将其添加到,请使用

    javac -cp your.jar com/nicky/My.java

    告诉编译器其他编译时依赖项的位置。

    如果您是从Eclipse编译,则需要配置您的项目依赖于your.jar:右键单击您的项目 - >属性 - > Java构建路径 - >图书馆 - >添加罐子..