簡體   English   中英

我可以編譯依賴.class文件的java代碼嗎?我沒有源.java文件?

[英]Can I compile java code that relies on a .class file and I don't have the source .java file?

我正在嘗試將兩個.class文件添加到來自我想要修改的供應商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中的工作原理

ImportedClass

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將當前目錄作為類路徑。

如果您嘗試在類路徑中編譯沒有ImportedClass.classMainClass.java出現故障。

如果我們嘗試使用-cp <folder>編譯它,它將被編譯。

在此輸入圖像描述

但是,這是一個非常基本的例子。 對於任何大於此的東西,您可能必須使用Apache Maven Ant太老了,gradle比maven有點復雜,所以我對Apache Maven的兩分錢

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM