2009-09-19 7 views
1

Solr DataImportHandler에 대한 사용자 정의 Transformer 서브 클래스를 작성했습니다. 그것은 jar 파일에 있지만 solr이 그것을 찾는 방법을 알아낼 수는 없습니다.사용자 정의 Solr 변압기 클래스 경로

java.lang.NoClassDefFoundError: org/apache/solr/handler/dataimport/Transformer 

내가 정의 변압기의 전체 경로와 데이터-config.xml 파일 구성했습니다, 나는 모든/lib 디렉토리 내 jar 파일을 시도했습니다

transformer="RegexTransformer,DateFormatTransformer,com.mycompany.xform.MyTransformer" 

을/DIST 디렉토리 I 찾을 수있는, 그것은 나를 의존하는 파일에 문제가 있다고 생각 선도. 로그가 실제 클래스를 찾을 수는 없지만 꽤 도움이되지 않는다면 매우 좋을 것입니다. MyTransformer 사양을 제거하면 dataimporthandler가 정상적으로 작동합니다.

+1

webapp이 자신의 클래스의 기본 클래스 (org.apache.solr.handler.dataimport.Transformer)를 찾을 수없는 것 같습니다. – jeje

+0

예, 분명히 문제입니다. 하지만 어떻게 고칠 수 있습니까? – Geordie

+0

이 문제가 해결 되었습니까? 그렇다면 어떻게 해결 되나요? 시작 디렉토리를 사용하여 solr을 시작합니다. – Ravi

답변

0

클래스 로더와 관련이 있다고 생각합니다. (톰캣을 사용하고 있다고 가정 할 때 : https://sec1.woopra.com/docs/class-loader-howto.html)

jar를 "Common"Classloader 디렉토리에 넣으면 모든 클래스의 종속성을 해당 클래스 로더에서도 사용할 수 있어야합니다. 그래서 아마도 Solr 클래스는 webapps 디렉토리 (예 : WEB-INF/lib)에 있습니다. 그래서 tomcat이 올바른 클래스를 어디에서 찾을 수 있는지 알고 있어야합니다. 예를 들어, 서로 다른 webapp 디렉토리에 Solr의 두 버전이 있다고 생각하십니까? 어느 버전을 Tomcat에서 사용해야합니까?

솔직히 말해서 해결책은 Solr webapp에 항아리를 넣는 것입니다.

+0

을 사용하고 있는데, 만약 solr이 부두 기동, 항아리를 사용하여 시작된다면 어떻게 될까요? – Ravi

+0

나의 이전 게시물 몇 분 후 - 클래스 찾을 수 없음 오류는 /lib/* 디렉토리에 사용자 정의 트랜스포머 jar를 놓음으로써 해결됩니다. 부두 start.jar 모드로 사용 중입니다 – Ravi

0

저는 사용자 정의 변환기 jar 파일을 solr/lib에 넣습니다. jetty.jar 파일과 같은 디렉토리.

또한 빌드하고 동일한 solr/lib 디렉토리에 apache-solr-dataimporthandler-1.4.1-dev.jar을 넣어야했습니다.

+0

당신은 apache-solr-dataimporthandler-1.4.1-dev.jar를 재 구축 했습니까? 왜 그리고 새로운 빌드에 무엇이 포함되어 있습니까? – Ravi

+0

이전 게시물 몇 분 후 - 클래스를 찾을 수 없음 오류는 /lib/* 디렉토리에 사용자 정의 변압기 jar를 놓음으로써 해결됩니다. 부두 시작 모드와 함께 사용하고 있습니다. – Ravi