2011-06-22 62 views
7

有一個java文件,它有一些依賴關係的jar包。但現在,我沒有這些罐子,我必須將它編譯成一個.class文件。是否可以在不提供依賴性的情況下編譯java文件?

可以做到這一點嗎?


UPDATE

謝謝您的回答。

起初,我認爲我們可以爲缺失的依賴創建一些存根,這很容易但很無聊。既然我們可以在不遺漏存根的情況下創建存根,以使編譯器感到開心,爲什麼我們不能讓工具自動執行呢?該工具不需要創建存根,而是讀取java文件,收集信息,然後生成.class文件。

但是,如果在java文件中的「導入」語句包含「*」,這將是一個問題:

import aaa.* 
import bbb.* 

public class Hello { 
    World world; 
} 

我們不知道如果類「世界」包下「AAA」或「bbb」。如果我們不熟悉缺失的依賴項,我們甚至不知道如何爲「World」類創建存根。

但是,如果「進口」聲明必須是清晰的,我認爲這是可能的,但也許沒有人會寫這樣的工具

+0

你試過了嗎? – MarcoS

+0

我認爲這不可能 –

+0

我的問題是:完成後,您將如何處理類文件?如果你不能運行它來測試它,你怎麼能確定代碼是正確的? –

回答

9

你可能會發瘋,並且將所需的依賴關係作爲存根執行,除非讓編譯器保持高興,否則什麼也不做。

+0

+1 - 不需要如果想要發瘋,只需將鼠標懸停在Eclipse中缺少的類上,然後在上下文菜單中單擊「創建類'xxxx'」。您可以在缺失類中使用所有必需的方法。 – Qwerky

+0

當我想從真正的jar中調用真正的方法嗎? – Gobliins

+0

你需要真正的依賴關係,在運行時,存根將只有它們的編譯,使用模擬框架可以幫助測試。 – Tom

5

號對不起。您需要在類路徑中的所有依賴項進行編譯。

3

不可以。但是,如果您試圖編譯的代碼只是直接使用的少數類,則可以提供依存類文件的廢除版本。

然後在理論上,如果您採用.class文件編譯並在類路徑上放置真正的依賴關係,那麼您的應用程序將使用正確的(非刪除)依賴關係類。

1

在編譯任何文件之前,它總是查找任何依賴關係。 但你說你沒有那些罐子!

看看你是否可以刪除該項目/文件的依賴關係,然後嘗試編譯它。試一試!

相關問題