risky_ren 2009-03-23 11:51
浏览 189
已采纳

spring+hibernate search时抛java.lang.LinkageError

环境
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中的方法
/**

  • Helper class to get a FullTextSession out of a regular session.
  • @author Emmanuel Bernard
  • @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);
    }
    }

    /**

    • @deprecated As of release 3.1.0, replaced by {@link #getFullTextSession(Session)} */ @Deprecated public static FullTextSession createFullTextSession(Session session) { return getFullTextSession(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有冲突

  • 写回答

6条回答 默认 最新

  • playfish05 2009-03-23 15:28
    关注

    如果是这样还有问题的话..再找找hibernate依赖的包...很有可能是jar包出现了冲突.

    仔细检查下你的各个jar包.

    可以参考下面的方法:

    [quote]1 重新安装tomcat 6,保证tomcat自带的jar不会被覆盖
    2 删除你的WEB-INF/lib下面的jar
    3 把不冲突的jar复制到 tomcat/lib 目录下面 [/quote]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条