2016-03-05 64 views
0

我一直在使用Solr版本4.10.2。我通過使用maven(pom.xml中)Solrj - 由於HTTPSolrServer而無法繼承最終類錯誤

<dependency> 
    <groupId>org.apache.solr</groupId> 
    <artifactId>solr-solrj</artifactId> 
    <version>4.10.2</version> 
     <scope>compile</scope> 
</dependency> 

添加solrj版本4.10.2這些已安裝的Maven依賴:

solr-solrj-4.10.2.jar 
httpclient-4.3.1.jar 
httpcore-4.3.jar 
httpmime-4.3.1.jar 
wstx-asl-3.2.7.jar 
wstx-asl-3.2.7.jar 
noggit-0.5.jar 

當我定義Solr的HTTP路徑,L獲取和例外:

Exception in thread "main" java.lang.VerifyError: Cannot inherit from final class 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:800) 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) 
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358) 
    at org.apache.http.impl.client.DefaultHttpClient.createHttpParams(DefaultHttpClient.java:157) 
    at org.apache.http.impl.client.AbstractHttpClient.getParams(AbstractHttpClient.java:447) 
    at org.apache.solr.client.solrj.impl.HttpClientUtil.setFollowRedirects(HttpClientUtil.java:260) 
    at org.apache.solr.client.solrj.impl.HttpClientConfigurer.configure(HttpClientConfigurer.java:60) 
    at org.apache.solr.client.solrj.impl.HttpClientUtil.configureClient(HttpClientUtil.java:142) 
    at org.apache.solr.client.solrj.impl.HttpClientUtil.createClient(HttpClientUtil.java:118) 
    at org.apache.solr.client.solrj.impl.HttpSolrServer.<init>(HttpSolrServer.java:168) 
    at org.apache.solr.client.solrj.impl.HttpSolrServer.<init>(HttpSolrServer.java:141) 
    at addIndex.main(addIndex.java:10) 

這是我如何定義Solr的路徑:

HttpSolrServer server = new HttpSolrServer("http://localhost:8983/solr");

HttpSolrServer server = new HttpSolrServer("http://localhost:8983/solr/#/collection1"); 

是否有另一種方法來建立與java項目的連接?我得到這個異常的原因是什麼?

+0

我正在使用Eclipse –

回答

1

如果要連接到Solr(和使用SolrJ作爲客戶端庫),你supposed to instantiate HttpSolrClient

String urlString = "http://localhost:8983/solr/collection1"; 
SolrClient solr = new HttpSolrClient(urlString); 

BTW:在URL中錨(如#foo)是爲客戶只(如瀏覽器),並不意味着(因此通常不會)作爲請求的一部分進行傳輸。

+0

我改變了你的想法,得到同樣的異常。我添加了一個字符串變量,從URL中刪除#。順便說一下,我無法導入SolrClient。它不存在。 http://postimg.org/image/4nxnnz27v/ –

+0

它在[org.apache.solr.client.solrj.SolrClient](https://lucene.apache.org/solr/5_4_0/solr-solrj/org/ apache/solr/client/solrj/impl/HttpSolrClient.html)包(該鏈接是實際執行的)。 – MatsLindh

+0

謝謝。版本4.10.2不支持SolrClient軟件包,所以我將版本更改爲5.4.0,現在可以使用。 –