【发布时间】:2014-05-06 23:26:47
【问题描述】:
我正在努力从我的 localhost Solr 从 Android 应用程序中检索一些数据。但我仍然有同样的错误。
05-06 18:22:09.036: E/AndroidRuntime(1628): java.lang.NoSuchMethodError: org.apache.http.conn.scheme.Scheme.<init>
05-06 18:22:09.036: E/AndroidRuntime(1628): at org.apache.http.impl.conn.SchemeRegistryFactory.createSystemDefault(SchemeRegistryFactory.java:83)
05-06 18:22:09.036: E/AndroidRuntime(1628): at org.apache.http.impl.client.SystemDefaultHttpClient.createClientConnectionManager(SystemDefaultHttpClient.java:121)
05-06 18:22:09.036: E/AndroidRuntime(1628): at org.apache.http.impl.client.AbstractHttpClient.getConnectionManager(AbstractHttpClient.java:221)
我正在使用这些罐子: - Commons-io-2.1.jar
- httpclient-4.3.1.jar
- httpcore-4.3.jar
- jcl-over-slf4j-1.6.6.jar
- 7 月到 slf4j-1.6.6.jar
- log4j-1.2.16.jar
- slf4j-api-1.6.6.jar
- slf4j-log4j12-1.6.6.jar
- solr-solrj-4.8.0jar
这是我写的代码: 包 com.example.secondapp;
import java.net.MalformedURLException;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocumentList;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends Activity {
Button btn1;
EditText etxt1;
public void RunIt() throws MalformedURLException, SolrServerException
{
String urlString = "http://localhost:8983/solr/collection1";
SolrServer solr = new HttpSolrServer(urlString);
SolrQuery parameters = new SolrQuery();
parameters.set("qt", "/select");
parameters.set("q", "mem");
QueryResponse response = solr.query(parameters);
SolrDocumentList list = response.getResults();
// for (int i = 0; i < list.size(); ++i) {
// etxt1.setText((CharSequence) list.get(i));
//}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn1=(Button)findViewById(R.id.button1);
etxt1=(EditText)findViewById(R.id.editText1);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
etxt1.setText("a fin111");
try {
RunIt();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SolrServerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
}
谁能告诉我错误 谢谢。
进一步调查表明 solrj 依赖于 android 工具中提供的旧 httpclient,并且不使用我引用的那个 httpclient-4.3.1.jar。
有什么办法可以解决这个问题。
【问题讨论】:
-
如果 localhost 表示您拥有 solr 并尝试在模拟器中访问的 pc/desktop,您需要将 localhost 更改为 10.0.2.2
-
你通过 HTTP GET 查询它。
-
@GaneshP 为什么需要从 localhost 更改为 10.0.2.2 ?
-
@Ajay Takur in Android emulator localhost 表示系统 - 表示模拟器 & 10.0.2.2 表示运行模拟器的系统
标签: java android solr jar solrj