當我試圖通過Gradle運行Jetty並且缺少想法時,我遇到了java.lang.ClassNotFoundException: oracle.jdbc.pool.OracleConnectionPoolDataSource
異常。在gradle這個點的碼頭配置到ENV文件:ClassNotFoundException使用Jetty/Gradle加載Oracle驅動程序
[jettyRun, jettyRunWar]*.jettyEnvXml = file('../resources/jetty/jetty-env.xml')
和文件中的JNDI配置:
<New id="OracleDS" class="org.mortbay.jetty.plus.naming.Resource">
<Arg>java:comp/env/OracleDS</Arg>
<Arg>
<New class="oracle.jdbc.pool.OracleConnectionPoolDataSource">
...
</New>
</Arg>
</New>
我一直在試圖增加一個extraClasspath該文件,設置碼頭.home系統屬性,並添加依賴關係到jar(到webapp和buildscript)。我也嘗試了更簡單的OracleDataSource
類。任何具體的建議都會非常有幫助。
我不認爲這是一個從根本上更好的方式(其中的方式可能是更好嗎?),但你應該使用'providedRuntime',除非你想讓驅動程序在戰爭中結束。不知道你的意思是「除了將其添加到新的配置」。 –
是的,從那以後,我將它添加到新的配置中。並會相應地更新答案。更好的解決方案問題主要是「我仍在研究如何有效地使用Gradle,並且不確定這種方法是否存在問題/不正確的做法,我沒有看到」,而不是因爲我實際上有任何問題與它或尋求改善。你作爲一個值得信賴的來源解答了我的擔憂(順便說一下,我正在調教Spock和Gradle工作,並正在獲得轉換)。 –
我不認爲在'配置'下嵌套'依賴關係'會給頂層上的'依賴關係'塊帶來什麼。換句話說,配置{jetty {}}'部分不起任何作用。它添加了一個新的配置,而不用做任何事情。這導致了「dependsOn」行正在做什麼的問題。 –