2012-01-17 149 views
1

在WebLogic服務器上部署我得到一個異常:JAR依賴例外應用

[2012-01-13 01:17:11,496] ERROR [org.springframework.web.servlet.DispatcherServlet] Context 
initialization failed 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 
'org.springframework.validation.beanvalidation.LocalValidatorFactoryBean#0': Invocation of init method 
failed; nested exception is java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException 
at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.at 
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291) 
at 
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 
at 
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288) 
at 
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) 
at 
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.at 
org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext. 

我有一些罐子如下:

log4j-1.2.14.jar 
spring-asm-3.0.3.RELEASE.jar 
spring-beans-3.0.3.RELEASE.jar 
spring-context-3.0.3.RELEASE.jar 
spring-core-3.0.3.RELEASE.jar 
spring-expression-3.0.3.RELEASE.jar 
spring-web-3.0.3.RELEASE.jar 
spring-webmvc-3.0.3.RELEASE.jar 
servlet-2.3.jar 
validation-api-1.0.0.GA.jar 
commons-logging-1.1.1.jar 
hibernate-validator-4.0.2.GA.jar 
slf4j-api-1.5.6.jar 
slf4j-log4j12-1.5.6.jar 
standard.jar 
commons-fileupload-1.1.1.jar 
ESAPI-1.4.4.jar 

我猜測的問題都可以但需要指導解決它:

經過研究的問題,2個可能的情況來到前列: Hibernate驗證程序庫有一個錯誤導致dep JDK 6 Hibernate驗證器依賴於JAXBException類,並且該類不存在於現有的Weblogic環境中 進一步研究後,hibernate-validator-4.0.2.jar構建明確表示JDK 5的依賴關係。 深入研究Hibernate Validator代碼,看起來版本4.0.2依賴於JAXB API 2.1。

Weblogic服務器在Java 1.5上,代碼也在Java 1.5上編譯,那麼爲什麼異常似乎彈出?

+0

我發現hibernate validator有一個依賴於java 6我添加了一個名爲jaxb-api-2.1.jar的api,然後這個問題出現了..任何其他標準來解決這個問題? – GOK 2012-01-17 13:55:50

回答

1

你被JAr不兼容咬住了。你的項目有一個版本的JAR,但WebLogic有另一個版本。這兩個不匹配。 (這是OSGi出生時需要解決的問題。)

您需要告訴WebLogic您更喜歡哪個JAR。 weblogic.xml中有一個用於「更喜歡WAR文件JAR」的設置。對不起,我不記得確切的標籤名稱;請Google爲它。

+0

感謝哥們!我在哪裏可以找到這個weblogic.xml,我已經很新的weblogic(在Apache Tomcat上工作).. :) – GOK 2012-01-17 11:09:49

+0

我發現hibernate驗證器有一個依賴於Java 6我添加了一個名爲jaxb-api-2.1.jar然後也出現這個問題..解決這個問題的任何其他標準? – GOK 2012-01-17 13:54:05

+1

在這裏尋找設置優先WAR文件JAR:http://stackoverflow.com/questions/7187581/how-to-set-order-of-jars-in-weblogic – 2014-04-08 15:56:24