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 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能
  • ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面
  • ¥50 NT4.0系统 STOP:0X0000007B
  • ¥15 想问一下stata17中这段代码哪里有问题呀
  • ¥15 flink cdc无法实时同步mysql数据
  • ¥100 有人会搭建GPT-J-6B框架吗?有偿