2016-09-30 78 views
1

我有ColdFusion 9.0.2和Java 1.6.0_29。我試圖使用java loader項目來編譯java代碼,但我收到此錯誤。在Coldfusion 9中使用JavaLoader丟失包

package javax.servlet.http does not exist import 
javax.servlet.http.HttpServletRequest; 

然而,javax.servlet.http包似乎已經有B/C我沒有錯誤執行此代碼:

<cfset obj = createObject("java","javax.servlet.http.HttpServletRequest")> 
<cfdump var="#obj#"> 

我爲javax.servlet.http包試圖downloading the jar並將其添加到CF(粘貼到C:\ ColdFusion9 \ runtime \ lib並重新啓動cf服務),但它沒有任何區別。這個軟件包的舊版本是否包含在一個CF或其他東西的一部分的jar中?

+1

在編譯自定義源代碼或運行基本[HelloWorld示例](https://github.com/markmandel/JavaLoader/tree/develop/example/compileHelloWorld)時,您是否收到該錯誤?你可以發佈完整的堆棧跟蹤嗎? * RE:... javax.servlet.http包似乎已經存在了*是的,ColdFusion是一個servlet。所以它被包含在主要的CF類路徑中。但是,默認情況下,JavaLoader不包含主CF類路徑路徑。嘗試設置'loadColdFusionClassPath = true'。 – Leigh

+0

謝謝,Leigh!添加loadColdFusionClassPath = true修復了它......或者至少讓我過去了那個依賴關係錯誤:-) – jessieloo

+0

*至少讓我過去了這個依賴關係錯誤*啊,解決依賴關係的樂趣;-) – Leigh

回答

2

是的。 ColdFusion本身作爲一個servlet運行(本質上)。因此,javax.servlet庫已經包含在主CF類路徑中,這就是調用createObject()的原因。但是,JavaLoader does not load the CF class path by default

Parameter: loadColdFusionClassPath

Defaults to:false

Loads the ColdFusion libraries with the loaded libraries. This used to be on by default, however now you must implicitly set it to be true if you wish to access any of the libraries that ColdFusion loads at application start up.

嘗試設置loadColdFusionClassPath = true。將javax.servlet jar文件添加到loadPaths陣列也可以。