【发布时间】:2016-04-22 14:22:02
【问题描述】:
我有一个 .jar,我想将我自己的 .class 添加到它并重新编译。有什么地方我可以做到吗?
【问题讨论】:
标签: java
我有一个 .jar,我想将我自己的 .class 添加到它并重新编译。有什么地方我可以做到吗?
【问题讨论】:
标签: java
是的,而且很简单(如果您已经拥有 .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 项目,编写您的类源代码,单击构建(如果它已经没有自动构建),然后使用文件资源管理器从磁盘上项目的“目标”目录中获取您的 .class 文件.
如果您的新 .java 类依赖于您尝试将其添加到的 .jar 中的类,请使用
javac -cp your.jar com/nicky/My.java
告诉编译器额外的编译时依赖项在哪里。
如果您是从 Eclipse 编译,则需要配置您的项目依赖于 your.jar:右键单击您的项目 -> 属性 -> Java 构建路径 -> 库 -> 添加 Jars..强>
【讨论】: