首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spymemcached与hibernate-memcached和webapp-runner冲突

Spymemcached与hibernate-memcached和webapp-runner冲突
EN

Stack Overflow用户
提问于 2013-06-13 22:43:00
回答 1查看 493关注 0票数 1

我有一个使用Spymemcached库的Heroku Java应用程序,在我的例子中,它包含在我使用的hibernate-memcached库(1.3)中。

我现在需要确保我的应用程序的所有请求都通过HTTPS。这将我带到了这个post,解决方案的重点是利用webapp-runner插件和一些配置来获得我的应用程序的正确标题(您为runner提供了一个context.xml)。

我的问题是webapp-runner插件对Spymemcached库也有一个依赖关系(在依赖关系图下面),这会导致启动时发生冲突。此外,我不能像这个post建议的那样将webapp-runner降级到7.0.22.1,因为对指定context.xml的支持是在事实发生之后才出现的。

所以我想把Spymemcached从我的hibernate-memcached依赖中排除,这样就只包含webapp-runner的Spymemcached源代码了:

代码语言:javascript
复制
        <dependency>
            <groupId>com.googlecode</groupId>
            <artifactId>hibernate-memcached</artifactId>
            <version>1.3</version>
            <exclusions>
                <exclusion>
                    <artifactId>hibernate</artifactId>
                    <groupId>org.hibernate</groupId>
                </exclusion>

                <exclusion>
                    <groupId>spy</groupId>
                    <artifactId>spymemcached</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

但由于某些原因,我在启动时仍然会遇到冲突-在创建我在应用程序上下文中指定的memcachedClient的工厂bean上:

代码语言:javascript
复制
<bean id="memcachedClient" class="net.spy.memcached.spring.MemcachedClientFactoryBean">...</bean>

导致了臭名昭著的java.lang.NoClassDefFoundError:

代码语言:javascript
复制
Error loading class [net.spy.memcached.spring.MemcachedClientFactoryBean] for bean with name 'memcachedClient' defined in file [/home/markus/coding/reader/target/tomcat.8080/work/Tomcat/localhost/_/WEB-INF/classes/META-INF/spring/applicationContext.xml]: problem with class file or dependent class; nested exception is java.lang.NoClassDefFoundError: org/springframework/beans/factory/FactoryBean
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveManagedList(BeanDefinitionValueResolver.java:353)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:153)...

当我在我的集成开发环境中搜索MemcachedClientFactoryBean时,我可以看到它是由webapp-runner提供的,而不是hibernate-memcached,所以排除似乎做了一些正确的事情。

我是不是漏掉了什么明显的东西?我如何摆脱这个NoClassDefFoundError?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-18 00:52:48

仅供参考,我发现webapp-runner版本7.0.22确实支持通过运行java -jar target/webapp-runner.jar --help来提供context.xml

它与以后的版本略有不同,在这些版本中,您指定的是... --context_xml ...而不是... --context-xml ...

7.0.22版本的webapp-runner没有将Spymemcached作为依赖项,这解决了这个问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17089981

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档