环境
tomcat6.0.18
spring2.5.6
hibernate-search-3.0.0.GA.jar(hibernate-search-3.1.0.GA.jar也不行)
hibernate-3.2.5.ga.jar
部分程式
import org.apache.lucene.analysis.StopAnalyzer;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.queryParser.QueryParser;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
1 Session session = super.getSessionFactory().getCurrentSession();
2 FullTextSession fullTextSession = Search.createFullTextSession(session);
3 Transaction tx = fullTextSession.beginTransaction();
4 QueryParser parser = new QueryParser("keyword", new StopAnalyzer());
第1行可以得到current session 类型为org.hibernate.Session;
第2行抛
java.lang.LinkageError: loader constraint violation: loader (instance of org/apache/catalina/loader/StandardClassLoader) previously initiated loading for a different type with name "org/hibernate/Session"
请大家帮忙看看,急坏了
[b]问题补充:[/b]
1.方法createFullTextSession是hibernate-search-3.0.0.GA.jar中的方法
/**
@author Hardy Ferentschik
*/
public final class Search {
private Search() {
}
public static FullTextSession getFullTextSession(Session session) {
if (session instanceof FullTextSessionImpl) {
return (FullTextSession) session;
}
else {
return new FullTextSessionImpl(session);
}
}
/**
2.我装的是解压版的tomcat6
3.不是tomcat/lib下的el-api.jar与项目WEB-INF/lib目录下的el-api.jar冲突。
[b]问题补充:[/b]
4.环境换成hibernate-search-3.1.0.GA.jar
hibernate-core-3.3.1.GA.jar
的组合,问题依然存在。。。
[b]问题补充:[/b]
5.很抱歉忘记注明“spring+hibernate search时抛java.lang.LinkageError”是在zk框架下应用的,脱离ZK,重新写了个测试的方法
通过ClassPathXmlApplicationContext获取有session的bean,在该bean中调用hibernate search 就没有错误了
还要try是不是zk下的包和和ibernate search中的jar有冲突
如果是这样还有问题的话..再找找hibernate依赖的包...很有可能是jar包出现了冲突.
仔细检查下你的各个jar包.
可以参考下面的方法:
[quote]1 重新安装tomcat 6,保证tomcat自带的jar不会被覆盖
2 删除你的WEB-INF/lib下面的jar
3 把不冲突的jar复制到 tomcat/lib 目录下面 [/quote]
1.看看你这个方法createFullTextSession 的代码.
2.貌似和tomcat 有关系,加载器不能实例化
在网上查了下,好像是tomcat 少了某个jar包,请问你的是不是安装版本的,你换一个解压缩版本的tomcat 试试,看结果
java.lang.LinkageError
链接错误。该错误及其所有子类指示某个类依赖于另外一些类,在该类编译之后,被依赖的类改变了其类定义而没有重新编译所有的类,进而引发错误的情况。
检查一下是否是tomcat/lib下的el-api.jar与项目WEB-INF/lib目录下的el-api.jar冲突。
把项目目录下的el-api.jar删除。
你看下是不是运行到了 这句 return new FullTextSessionImpl(session);
如果是的,可能是你的FullTextSessionImpl的实现有问题.还得看他里面的构造函数了:)
官方上面
Latest release: 3.1.0 GA (Changelog) (Road Map)
Release date: 04.12.2008
Requirements: Hibernate Core 3.3, JDK 5.0
Hibernate Search要求的hibernate核心版本是3.3,你给出的版本是hibernate-3.2.5.ga.jar,或许是这个问题导致的链接错误,用3.3版本重新试试