2009-12-23 53 views
2

我正在爲Java應用程序在Oracle JVM中運行構建腳本。爲了導入50多個類,看起來我需要將它們按順序排列,因此在編譯之前存在任何依賴關係。如何根據依賴關係生成類列表?

對於每個類,我跑「create or replace and compile java source {className} as {classPath}」爲每個文件。這樣做會給我一個編譯錯誤,因爲所需的類沒有被導入。

我怎麼能生成類的列表,按照相關性順序 - 也就是說,當你沿着列表,類的依賴性上面列出。我寧願將其作爲Ant任務來完成。

此外,如果你有一個如何得到這些類進口的,我很想聽聽你的想法更好的主意。

+0

作爲一個黑客位,所有的編譯錯誤後,我試圖運行'ALTER JAVA CLASS「/ d6c58067_JdbcPayslipDao」解決;'每個26無效類。這不起作用,仍抱怨編譯錯誤。 – 2009-12-23 21:49:09

+0

你只關心靜態依賴關係還是你還需要了解像Class.forName(「Foo」)這樣的東西? – TofuBeer 2009-12-23 21:49:11

+0

只是靜態依賴關係 – 2009-12-23 21:53:40

回答

0

爲了導入50多個類,看起來我需要將它們放入,以便在編譯之前存在任何依賴關係。

我從來沒有做過這樣的事情只是爲了編譯Java。

這就是Ant出生的原因。我建議只用Ant來做這件事。設置<類路徑>,你就沒有問題了。

+0

在Java或Ant世界中,你是對的,但是這是通過SQLPlus將Java類加載到Oracle中。 我使用Ant構建部署製品並動態地使SQL加載類(即創建...) – 2009-12-23 22:05:11

0

暴力方法:將50個CREATE放在一個批處理文件中並執行它直到找不到錯誤。在shell腳本中創建循環。當然,如果源中有錯誤,它永遠不會結束,但我假設它們沒問題。

+0

我不認爲客戶會贊同這一點。 他們已經採取了非常嚴格的做法,到目前爲止,似乎贊成我手動分析類以生成類的列表按順序。 – 2009-12-23 23:03:06

1

使用Ant任務javac編譯在文件系統中的類。如果需要更嚴格的依賴性檢查,則使用任務depend。使用loadjava工具以任意順序將.class.java文件加載到數據庫中。

+0

當前查看'dbms_java.loadjava()'。 – 2009-12-24 01:39:38

1

我無法想象,爲什麼你需要做到這一點,但如果你真的需要做到這一點,我不知道如果黑客一點的類加載器打印出每個類,因爲它加載和加載你的應用程序從那裏會給你有依賴關係圖嗎?

+0

應該指出,Java中的依賴關係可能是循環的。在這種情況下,並沒有真正的訂單。 – 2009-12-24 15:01:08

0

你不能加載一個jar文件嗎?爲什麼它必須是單獨的課程?