You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jackrabbit.apache.org by xing007008 <xi...@163.com> on 2008/09/21 02:43:32 UTC

How to fix the error

ERROR:

java.lang.NoSuchMethodError:
org.apache.lucene.store.FSDirectory.getDirectory(Ljava/io/File;Lorg/apache/lucene/store/LockFactory;)Lorg/apache/lucene/store/FSDirectory;
	at
org.apache.jackrabbit.core.query.lucene.PersistentIndex.(PersistentIndex.java:63)
	at org.apache.jackrabbit.core.query.lucene.MultiIndex.(MultiIndex.java:278)
	at
org.apache.jackrabbit.core.query.lucene.SearchIndex.doInit(SearchIndex.java:423)
	at
org.apache.jackrabbit.core.query.AbstractQueryHandler.init(AbstractQueryHandler.java:48)
	at
org.apache.jackrabbit.core.SearchManager.initializeQueryHandler(SearchManager.java:573)
	at org.apache.jackrabbit.core.SearchManager.(SearchManager.java:255)
	at
org.apache.jackrabbit.core.RepositoryImpl$WorkspaceInfo.getSearchManager(RepositoryImpl.java:1600)
	at
org.apache.jackrabbit.core.RepositoryImpl.initWorkspace(RepositoryImpl.java:599)
	at
org.apache.jackrabbit.core.RepositoryImpl.initStartupWorkspaces(RepositoryImpl.java:408)
	at org.apache.jackrabbit.core.RepositoryImpl.(RepositoryImpl.java:304)
	at
org.apache.jackrabbit.core.RepositoryImpl.create(RepositoryImpl.java:550)
	at
org.apache.jackrabbit.core.TransientRepository$2.getRepository(TransientRepository.java:245)
	at
org.apache.jackrabbit.core.TransientRepository.startRepository(TransientRepository.java:265)
	at
org.apache.jackrabbit.core.TransientRepository.login(TransientRepository.java:333)
	at
org.apache.jackrabbit.core.TransientRepository.login(TransientRepository.java:363)
	at
cn.ctit.repository.jcr.JcrRepositoryTest.setUp(JcrRepositoryTest.java:28)
	at junit.framework.TestCase.runBare(TestCase.java:125)
	at junit.framework.TestResult$1.protect(TestResult.java:106)
	at junit.framework.TestResult.runProtected(TestResult.java:124)
	at junit.framework.TestResult.run(TestResult.java:109)
	at junit.framework.TestCase.run(TestCase.java:118)
	at junit.framework.TestSuite.runTest(TestSuite.java:208)
	at junit.framework.TestSuite.run(TestSuite.java:203)
	at
org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:128)
	at
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
	at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
	at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
	at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
	at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)



JAVA CODE:

package jcr;

import javax.jcr.Node;
import javax.jcr.Repository;
import javax.jcr.Session;
import javax.jcr.SimpleCredentials;

import junit.framework.TestCase;

import org.apache.jackrabbit.core.TransientRepository;

/**
 * Validate that we can create and communicate with a repository.
 */
public class JcrRepositoryTest extends TestCase {

	private String repositoryConfig = "repository.xml";

	private String repositoryHome = "repository";

	Repository repository;

	Session session;

	@Override
	protected void setUp() throws Exception {
		Repository repository = new
TransientRepository(repositoryConfig,repositoryHome);
		session = repository.login(new
SimpleCredentials("testUserName","testPassword".toCharArray()));
	}

	@Override
	protected void tearDown() throws Exception {
		session.logout();
		session = null;
		repository = null;
	}

	public void testRepositoryConnection() throws Exception {
		//System.out.println("OK");
		Node root = session.getRootNode();
		String messageText = "Hello, World!";
		// Store content
		Node hello = root.addNode("hello");
		Node world = hello.addNode("world");
		world.setProperty("message", messageText);
		session.save();
		// Retrieve content
		Node node = root.getNode("hello/world");
		assertEquals("failed to retrieve created node", "/hello/world", node
				.getPath());
		assertEquals("message discovered not the same as the message stored",
				messageText, node.getProperty("message").getString());
		// Remove content
		root.getNode("hello").remove();
		session.save();
	}

}



-- 
View this message in context: http://www.nabble.com/How-to-fix-the-error-tp19590547p19590547.html
Sent from the Jackrabbit - Dev mailing list archive at Nabble.com.

Re: How to fix the error

Posted by Jukka Zitting <ju...@gmail.com>.
Hi,

On Sun, Sep 21, 2008 at 10:01 AM, Jukka Zitting <ju...@gmail.com> wrote:
> On Sun, Sep 21, 2008 at 2:43 AM, xing007008 <xi...@163.com> wrote:
>> java.lang.NoSuchMethodError:
>> org.apache.lucene.store.FSDirectory.getDirectory(Ljava/io/File;Lorg/apache/lucene/store/LockFactory;)Lorg/apache/lucene/store/FSDirectory;
>
> You don't have the Lucene jar in your classpath.

... or the _correct version_ of the Lucene jar. If you are using
Jackrabbit 1.4.x, then you need Lucene 2.2.0.

BR,

Jukka Zitting

Re: How to fix the error

Posted by Jukka Zitting <ju...@gmail.com>.
Hi,

On Sun, Sep 21, 2008 at 2:43 AM, xing007008 <xi...@163.com> wrote:
> java.lang.NoSuchMethodError:
> org.apache.lucene.store.FSDirectory.getDirectory(Ljava/io/File;Lorg/apache/lucene/store/LockFactory;)Lorg/apache/lucene/store/FSDirectory;

You don't have the Lucene jar in your classpath.

BR,

Jukka Zitting