[英]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.class
的MainClass.java
出現故障。
如果我們嘗試使用-cp <folder>
編譯它,它將被編譯。
但是,這是一個非常基本的例子。 對於任何大於此的東西,您可能必須使用Apache Maven 。 Ant太老了,gradle比maven有點復雜,所以我對Apache Maven的兩分錢
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.