为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

幕布斯7119047 2022-11-02 15:22:20
我正在尝试将两个 .class 文件添加到来自我要修改的供应商 SDK 的 .jar 中。当我编译依赖于 .jar 中的类的两个新 .java 文件时,我可以使用 -cp blahblahblah.jar 编译它们还是需要使用这些类本身来编译它们?作为后续,我是否能够编译与 file_2.java 位于同一包中的 file_1.java,但我只有 file_2.class?我已将使用 .jar 编译的两个 .class 文件放入 .jar 本身,但这似乎是一个使用自身编译的破坏性循环。我觉得我需要使用包编译它们,但我没有 .java 文件,只有 .class 文件。
查看完整描述

1 回答

?
弑天下

TA贡献1818条经验 获得超8个赞

从技术上讲,您可以使用 -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!!!");

  }

}

首先使用编译 ImportedClass.javajavac ImportedClass.java 这将创建ImportedClass.class文件。不要将它保存在同一个目录中,因为默认情况下javac将当前目录作为类路径。


如果您尝试在类路径中MainClass.java不带 的情况下编译ImportedClass.class,我们会失败。


如果我们尝试用 编译它-cp <folder>,它就会被编译。

//img1.sycdn.imooc.com//63621ac90001687906530441.jpg

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



查看完整回答
反对 回复 2022-11-02
  • 1 回答
  • 0 关注
  • 164 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号