我有一个.jar,我想将自己的.class添加到它并重新编译。我能在哪里做到吗?
答案 0 :(得分:8)
是的,而且很简单(如果你已经有了.class文件 - 那么就没有重新编译了。)
(假设您已经有.class文件并且只想将其添加到.jar。如果您没有.class文件,则需要编写.java源文件并首先将其编译为.class使用javac)
Jar文件实际上是zip文件 - 您可以使用zip / unzip来创建和解压缩它们。
(*)在第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构建路径 - >图书馆 - >添加罐子..