2011-12-28 54 views
1

我想做一些導入我自己的類,以便在DSLD腳本中使用,但DSLD編譯似乎不使用項目的類路徑 - 導入語句會破壞編譯,而Class.forName拋出類未發現異常。 有沒有辦法將自定義JAR放在DSLD classpath中,所以我可以在配置塊中使用自己的類? 我正在使用Eclipse 3.7和最新的Groovy插件(2.6.0)如何在Eclipse中更改DSLD編譯類路徑

回答

0

我不太瞭解DSLD的東西,但它喜歡Groovy looks可能有它自己的手段做到這一點。

+0

這是一個共享您的項目之間的全球DSLD,它只適用於DSLD文件。我需要的是一種更早掛鉤進入DSLD腳本編譯的eclipse插件編譯器的方法。我通過直接在DSLD腳本中動態添加URL到sysetmClassLoader獲得了一些結果,但我想知道是否有一些更乾淨的方法可以做到這一點 – 2011-12-28 13:33:13

2

你可以傳遞一個完全限定類名的字符串,只要它在DSLD被評估的項目類路徑上運行就行。這是這裏groovy-eclipse DSLDs

描述的一些微妙之處約java.lang.Class中引用

即使DSLD腳本在你的 項目的環境中被編輯,腳本實際上是由Groovy的Eclipse中加載。因此,腳本的 運行時類路徑對應於Groovy-Eclipse的 類路徑,而不是您項目的類路徑。

因此,您無法引用您的項目中定義的 類型的類對象。但是,您可以引用可用於Groovy-Eclipse的類對象 。這可能會令人困惑,因爲 項目中定義的類型被引用爲類對象時, 編譯器不會顯示編譯錯誤,但當引用Groovy-Eclipse類型時,它將顯示編譯 錯誤。這是因爲Groovy-Eclipse編譯器的 工程不在項目的類路徑中。這是 還沒有意識到DSLD文件將運行一個不同的類路徑。

更具體地說:

不直接引用類MyLocalType,你可以參考 它作爲一個字符串「com.mycompany.MyLocalType」標準JDK, GDK和中定義的所有類型的Groovy的所有可用直接在您的DSLD的 中,並且會顯示編譯錯誤。可以在以org.eclipse.jdt開頭的包中引用 類型。和org.codehaus.groovy.eclipse中的 。如果所有引用都完全合格。 但是,除非你真的知道你在做什麼 ,否則不建議這樣做。