我正在尝试将两个.class文件添加到来自要修改的Vendor SDK的.jar中。当我编译依赖于.jar中的类的两个新的.java文件时,我可以使用-cp blahblahblah.jar进行编译,还是需要使用这些类本身进行编译?
作为后续,我是否可以编译与file_2.java相同的程序包中的file_1.java,但是我只有file_2.class?
我将使用.jar编译的两个.class文件放入.jar本身,但这看起来像是一个破坏性循环,在其中使用自身进行编译。我觉得我需要使用软件包来编译它们,但是我没有.java文件,只有.class文件。
答案 0 :(得分:0)
从技术上讲,您可以使用-cp选项执行javac。但是,由于javac和java对类路径和依赖项非常挑剔,因此,如果使用诸如Ant,Maven或Gradle之类的构建工具,效果会更好。
编辑-添加了示例
这是它在普通javac中的工作方式
导入的类
public class ImportedClass {
public static void doThis() {
System.out.println("This is from the Imported Class");
}
}
MainClass
public class MainClass {
public static void main(String... args) {
System.out.println("started");
ImportedClass.doThis();
System.out.println("Hurray!!!");
}
}
首先使用javac ImportedClass.java
编译ImportedClass.java
然后将创建ImportedClass.class
文件。不要将其保留在同一目录中,因为默认情况下,javac
将当前目录用作类路径。
如果您尝试在类路径中没有MainClass.java
的情况下编译ImportedClass.class
,则会失败。
如果我们尝试使用-cp <folder>
进行编译,则会对其进行编译。
但是,这是一个非常基本的示例。对于大于此的任何内容,您可能必须使用Apache Maven。蚂蚁太老了,gradle比maven复杂一点,所以我对Apache Maven的两分钱