猿问

我可以编译依赖 .class 文件但没有源 .java 文件的 java 代码吗?

我正在尝试将两个 .class 文件添加到来自我要修改的供应商 SDK 的 .jar 中。当我编译依赖于 .jar 中的类的两个新 .java 文件时,我可以使用 -cp blahblahblah.jar 编译它们还是需要使用这些类本身来编译它们?

作为后续,我是否能够编译与 file_2.java 位于同一包中的 file_1.java,但我只有 file_2.class?

我已将使用 .jar 编译的两个 .class 文件放入 .jar 本身,但这似乎是一个使用自身编译的破坏性循环。我觉得我需要使用包编译它们,但我没有 .java 文件,只有 .class 文件。


幕布斯7119047
浏览 165回答 1
1回答

弑天下

从技术上讲,您可以使用 -cp 选项执行 javac。但是,由于 javac 和 java 对类路径和依赖项非常挑剔,因此如果使用 Ant、Maven 或 Gradle 等构建工具会更好。编辑- 添加了示例这是它在普通 javac 中的工作方式导入类public class ImportedClass {&nbsp; &nbsp; public static void doThis() {&nbsp; &nbsp; &nbsp; &nbsp; System.out.println("This is from the Imported Class");&nbsp; &nbsp; }}主类public class MainClass {&nbsp; public static void main(String... args) {&nbsp; &nbsp; System.out.println("started");&nbsp; &nbsp; ImportedClass.doThis();&nbsp; &nbsp; System.out.println("Hurray!!!");&nbsp; }}首先使用编译 ImportedClass.javajavac ImportedClass.java 这将创建ImportedClass.class文件。不要将它保存在同一个目录中,因为默认情况下javac将当前目录作为类路径。如果您尝试在类路径中MainClass.java不带 的情况下编译ImportedClass.class,我们会失败。如果我们尝试用 编译它-cp <folder>,它就会被编译。然而,这是一个非常基本的例子。对于比这更大的任何东西,您可能必须使用Apache Maven。Ant太老了,gradle比maven复杂一点,所以我的两分钱给Apache Maven
随时随地看视频慕课网APP

相关分类

Java
我要回答