2010-01-15 91 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文件类没有问题或额外的工作。