2010-01-15 87 views
1

我正在使用Mozilla Rhino編寫JavaScript服務器應用程序。我想在我的項目中包含HttpClient類以輕鬆訪問Web,但我無法弄清楚如何配置我的Eclipse項目以使Rhino加載HttpClient JAR文件。如何使用Rhino和Eclipse從JavaScript訪問外部JAR文件?

我已經在Eclipse中增加(從犀牛)js.jarhttpclient-4.0.1.jar到我的項目的構建路徑,並在我的運行配置我已指定由Rhino的js.jar(它發現)主類,並在我的JavaScript文件我基本上做到這一點:

importPackage(org.apache.http.client.methods); 
var get = new HttpGet("<some url returning json data>"); 
get.execute(); 
print(get.getResponseBodyAsString()); 

它不能這樣說:

Exception in thread "Thread-0" org.mozilla.javascript.EcmaError: ReferenceError: "HttpGet" is not defined. 

這怎麼可能這麼難?我一定在做一些根本錯誤的事情。

回答

1

好的,問題似乎是我有多個httpclient-4.0.1.jar文件的引用,無論是在我的類路徑還是在我的項目的構建路徑中。除此之外,我似乎忽略了一些httpclient-4.0.1.jar依賴的依賴關係。在清理完我的類路徑並將所有必需的jar添加到我的項目之後,現在似乎可以找到所需的一切。

感謝您的幫助!

0

當您運行程序時,您是否確定httpclient-4.0.1.jar在類路徑中?

+0

那麼構建路徑和類路徑有什麼區別?我假設構建路徑是在編譯時(或某事)和類路徑是在運行時?我已將我的'httpclient-4.0.1.jar'添加到類路徑文件夾中,如果我編寫純Java(而不是JavaScript並通過Rhino運行它),它會完美地找到HttpClient庫。 – vrutberg 2010-01-16 10:49:59

3

我不明白爲什麼你的代碼不應該工作,如果你的類路徑設置正確。我建議要儘量明確地加載類,看看是否真的是可用的,否則你似乎沒有把它在你的classpath:

println(java.lang.Class.forName('org.apache.http.client.methods.HTTPGet')); 

犀牛應該能夠加載從外部JAR文件類沒有問題或額外的工作。

相關問題