2014-09-23 66 views
1

我最近更新了其中一個測試服務器以使用Glassfish 4.1。此更新後,我遇到了將Web服務部署到Glassfish的問題。在部署應用程序時,我收到消息「部署期間發生錯誤:加載應用程序時發生異常:java.lang.ClassNotFoundException:org.hibernate.validator.internal.cdi.interceptor.ValidationInterceptor」(請參閱​​下面的完整堆棧跟蹤)問題更新到Glassfish 4.1

我原本以爲這個問題是圍繞一個定製的Guava jar(添加一個beans.xml來規避兼容性問題),我使用最新的Guava版本(18)重新構建了應用程序,並且仍然遇到了部署到Glassfish 4.1的相同問題該應用程序沒有問題,部署到GlassFish 4.0最新版本番石榴

[2014-09-23T10:15:37.589-0600] [glassfish 4.1] [SEVERE] [] [javax.enterprise.system.tools.deployment.common] [tid: _ThreadID=177 _ThreadName=admin-listener(25)] [timeMillis: 14114 
88937589] [levelValue: 1000] [[ 
    Exception while invoking class org.glassfish.ejb.startup.EjbApplication start method 
java.lang.RuntimeException: java.lang.ClassNotFoundException: org.hibernate.validator.internal.cdi.interceptor.ValidationInterceptor 
     at com.sun.ejb.containers.BaseContainer.setStartedState(BaseContainer.java:962) 
     at org.glassfish.ejb.startup.EjbApplication.markAllContainersAsStarted(EjbApplication.java:140) 
     at org.glassfish.ejb.startup.EjbApplication.start(EjbApplication.java:152) 
     at org.glassfish.internal.data.EngineRef.start(EngineRef.java:122) 
     at org.glassfish.internal.data.ModuleInfo.start(ModuleInfo.java:291) 
     at org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:352) 
     at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:500) 
     at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:219) 
     .... 
     at java.lang.Thread.run(Thread.java:744) 
Caused by: java.lang.ClassNotFoundException: org.hibernate.validator.internal.cdi.interceptor.ValidationInterceptor 
     at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1783) 
     at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1633) 
     at com.sun.ejb.containers.interceptors.InterceptorManager.buildEjbInterceptorChain(InterceptorManager.java:431) 
     at com.sun.ejb.containers.interceptors.InterceptorManager.<init>(InterceptorManager.java:131) 
     at com.sun.ejb.containers.BaseContainer.initializeInterceptorManager(BaseContainer.java:3396) 
     at com.sun.ejb.containers.BaseContainer.setStartedState(BaseContainer.java:950) 
     ... 83 more 
+0

我有同樣的問題。你是如何解決它的? – 2015-01-02 17:24:06

回答

1

這似乎是一個錯誤。

https://java.net/jira/browse/HK2-233 https://java.net/jira/browse/JERSEY-2661

不幸的是甲骨文不會釋放GlassFish的補丁,但只有主要版本(據我所知)。一種替代方法是使用the GlassFish fork "Payara"

你可以把這個標準符合解決方法:

private <T> boolean beanIsValid(final T bean) { 
    final Validator validator = Validation.buildDefaultValidatorFactory().getValidator(); 
    final Set<ConstraintViolation<T>> constraintViolations = validator.validate(bean); 

    return constraintViolations.isEmpty(); 
}