Short story: I am using Lucene 3.0.1, and I'm trying to run Solr 1.4.1. I
get an error starting the embedded Solr server that says it cannot find the
method FSDirectory.getDirectory. The release notes for Solr 1.4.1 says it is
compatible with Lucene 2.9.3, and I see that Lucene 3.0.1 does not have the
FSDirectory.getDirectory method any more. Dorwngrading Lucene to 2.9.x is
not an option for me. What version of Solr should I use for Lucene 3.0.1?
(We're just starting with Solr, so changing that version is not hard.) Or,
do I have to upgrade both Solr and Lucene?

Thanks,

-Rich

Here's the long story:
I am using Lucene 3.0.1, and I'm trying to run Solr 1.4.1. I have not used
any other version of Lucene. We have an existing project using Lucene 3.0.1,
and we want to start using Solr. When I try to initialize an embedded Solr
server, like so:

                
                String solrHome = PATH_TO_SOLR_HOME;
                File home = new File(solrHome);
                File solrXML = new File(home, "solr.xml");
                
                coreContainer = new CoreContainer();
                coreContainer.load(solrHome, solrXML);
                 
                        embeddedSolr = new EmbeddedSolrServer(coreContainer, 
SOLR_CORE);
                        

                        
[04-08 11:48:39] ERROR CoreContainer [main]: java.lang.NoSuchMethodError:
org.apache.lucene.store.FSDirectory.getDirectory(Ljava/lang/String;)Lorg/apache/lucene/store/FSDirectory;
at
org.apache.solr.spelling.AbstractLuceneSpellChecker.initIndex(AbstractLuceneSpellChecker.java:186)
        at
org.apache.solr.spelling.AbstractLuceneSpellChecker.init(AbstractLuceneSpellChecker.java:101)
        at
org.apache.solr.spelling.IndexBasedSpellChecker.init(IndexBasedSpellChecker.java:56)
        at
org.apache.solr.handler.component.SpellCheckComponent.inform(SpellCheckComponent.java:274)
        at
org.apache.solr.core.SolrResourceLoader.inform(SolrResourceLoader.java:508)
        at org.apache.solr.core.SolrCore.(SolrCore.java:588)
        at org.apache.solr.core.CoreContainer.create(CoreContainer.java:428)
        at org.apache.solr.core.CoreContainer.load(CoreContainer.java:278)

        
Looking at Google posts about this, it seemed that this can be caused by a
version mismatch between the Lucene version in use and the one Solr tries to
use. I noticed a Lucene version tag in the example solrconfig.xml that I’m
modifying:
 
  LUCENE_40
 
I changing it to LUCENE_301, changing it to LUCENE_30, and commenting it
out, but I still get the same error. Using
LucenePackage.get().getImplementationVersion() shows this as the Lucene
version:
      
Lucene version: 3.0.1 912433 - 2010-02-21 23:51:22

I also printed my classpath and found the following lucene jars:
lucene-analyzers-3.0.1.jar
lucene-core-3.0.1.jar
lucene-highlighter-3.0.1.jar
lucene-memory-3.0.1.jar
lucene-misc-2.9.3.jar
lucene-queries-2.9.3.jar
lucene-snowball-2.9.3.jar
lucene-spellchecker-2.9.3.jar

The FSDirectory class is in lucene-core. I decompiled the class file in the
jar, and did not see a getDirectory method. Also, I used a ClassLoader
statement to get an instance of the FSDirectory class my code is using, and
printed out the methods; no getDirectory method.

I gather from the Lucene Javadoc that the getDirectory method is in
FSDirectory for 2.4.0 and for 2.9.0, but is gone in 3.0.1 (the version I'm
using). 

Is Lucene 3.0.1 completely incompatible with Solr 1.4.1? Is there some way
to use the luceneMatchVersion tag to tell Solr what version I want to use?


--
View this message in context: 
http://lucene.472066.n3.nabble.com/Solr-1-4-1-compatible-with-Lucene-3-0-1-tp2806828p2806828.html
Sent from the Solr - Dev mailing list archive at Nabble.com.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to