gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 06:08:23 24 4
gpt4 key购买 nike

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

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

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

最佳答案

从技术上讲,您可以使用 -cp 选项执行 javac。但是,由于 javac 和 java 对类路径和依赖项非常挑剔,因此如果您使用 Ant、Maven 或 Gradle 等构建工具会更好。

编辑 - 添加示例

这是它在普通 javac 中的工作原理

导入类

public class ImportedClass {
public static void doThis() {
System.out.println("This is from the Imported Class");
}
}

主类

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> 来编译它,已编译。

enter image description here

但是,这是一个非常基本的示例。对于比这更大的任何东西,您可能必须使用 Apache Maven 。 Ant 太老了,gradle 比 maven 稍微复杂一点,所以我给 Apache Maven 两分钱

关于java - 我可以编译依赖于 .class 文件的 java 代码,但我没有源 .java 文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55927771/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com