在尝试 Lucene 包时,这也让我感到困惑...但这是一个例子,现在我正在尝试使用 Java 来了解 HTTP/JSON/URL 内容。事实上,我使用 Jython...因为这不是 SSCCE,所以我将其留在(更简洁的)Jython 中。 Java 用户应该不难理解。
我从 SO 获得了一些代码,解释了如何使用 Java 发送 JSON 对象:
import javax.json
import org.apache.http.impl.client as httpclient
httpClient = httpclient.HttpClientBuilder.create().build()
try:
request = javax.json.HttpPost("http://yoururl") # Rubbish: see below
params = javax.json.StringEntity(json.toString())
request.addHeader("content-type", "application/json")
request.setEntity(params)
httpClient.execute(request)
# handle response here...
except Exception, ex:
# handle exception here
print ex
httpClient.close()
当我尝试运行它时,我首先得到 HttpClientBuilder 的“找不到类”。
一些谷歌搜索引导我到 https://hc.apache.org/downloads.cgi ...所以我看着这个页面并想:这可能是我需要的“HttpClient”下载...所以我下载并提取了 10 个 jar 文件。我想我需要包含httpclient-4.4.1.jar。正确。
下一个“未找到类”是 ConnectionReuseStrategy:我调查并包含 httpcore-4.4.1.jar。正确。
此后,我得到 org.apache.commons.logging.LogFactory 的“找不到类”。猜测,我包含了 commons-logging-1.2.jar。正确。
在此之后我得到
'javapackage' object has no attribute 'HttpPost'
此 Jython 消息意味着我错误地猜测了 HttpPost 的包“javax.json”。
所以我谷歌“HttpPost”并发现它是org.apache.http.client.methods的成员。这并没有告诉我接下来要包含哪个 jar 文件...我必须猜测!
我的问题是:假设您可以找到某个类(可能)来自的包,您能找到该包与实际 jar 文件的关系吗?正如我所说,这对我来说是一个大难题,对于 Lucene 来说是一个大难题,现在对于所有 Apache HTTP 东西来说也是如此。
最佳答案
www.findjar.com (或 http://findjar.com 有些人会这样)!
稍后 然而,它并不系统化:它似乎不涉及自动化系统。您必须提交“可能的候选” jar 。我提交了elasticsearch jar。但 Lucene 似乎也缺失了。已开始阅读有关 Maven 的内容。叹息。
关于Java/Jython - 如何将未找到的类与特定的 jar 文件关联起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30415765/