Deployment 在glassfish 4.1上部署战争失败

Deployment 在glassfish 4.1上部署战争失败,deployment,hk2,glassfish-4.1,Deployment,Hk2,Glassfish 4.1,在Glassfish 4.1上部署war时,我遇到以下错误: Caused by: java.lang.NoClassDefFoundError: org/jvnet/hk2/internal/ServiceLocatorImpl at com.timm.mcr.api.guice.APIJerseyModule.configureServlets(APIJerseyModule.java:47) at com.google.inject.servlet.ServletModule.config

在Glassfish 4.1上部署war时,我遇到以下错误:

Caused by: java.lang.NoClassDefFoundError: org/jvnet/hk2/internal/ServiceLocatorImpl
at com.timm.mcr.api.guice.APIJerseyModule.configureServlets(APIJerseyModule.java:47)
at com.google.inject.servlet.ServletModule.configure(ServletModule.java:55)
at com.google.inject.AbstractModule.configure(AbstractModule.java:62)
at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:340)
at com.google.inject.spi.Elements.getElements(Elements.java:110)
at com.google.inject.internal.InjectorShell$Builder.build(InjectorShell.java:138)
at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:104)
at com.google.inject.Guice.createInjector(Guice.java:96)
at com.google.inject.Guice.createInjector(Guice.java:73)
at com.timm.common.guice.core.guice.AbstractBindingManager.createInjector(AbstractBindingManager.java:68)
at com.timm.common.guice.core.guice.AbstractBindingManager.getInjector(AbstractBindingManager.java:53)
at com.timm.mcr.api.guice.APIGuiceServletContextListener.getInjector(APIGuiceServletContextListener.java:68)
at com.google.inject.servlet.GuiceServletContextListener.contextInitialized(GuiceServletContextListener.java:47)
at com.timm.mcr.api.guice.APIGuiceServletContextListener.contextInitialized(APIGuiceServletContextListener.java:38)
at org.apache.catalina.core.StandardContext.contextListenerStart(StandardContext.java:5394)
at com.sun.enterprise.web.WebModule.contextListenerStart(WebModule.java:743)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:5963)
... 34 more
Caused by: java.lang.ClassNotFoundException: org.jvnet.hk2.internal.ServiceLocatorImpl
    at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1783)
    at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1633)
    ... 51 more

Glassfish 4.1安装了hk2定位器库。为什么会出现这样的错误?

它看起来像是您的项目或其使用需要该类的东西,并且可能包含jar的范围设置为提供

如果您正在使用maven,请尝试将hk2-locator-2.1.9.jar添加到您的项目中:

将jar添加到glassfish4/glassfish/domains/yourdomain/lib 然后重新启动服务器

如果使用maven检查项目是否正在使用它,请运行:

mvn dependency:tree

Maven依赖树报告“org.glassfish.hk2:hk2 locator:jar:2.4.0-b10:provided”。jar库在目录中可用。库不在应用程序类路径中是否正常?您的项目中的hk2 locator版本和glassfish上的版本可能不同。如果glassfish版本未更改类或包装,则会抛出该错误。可以肯定,glassfish安装的是同一版本的oh HK2库。应用程序类加载器未列出glassfish模块库。这正常吗?可能是缺少配置?我通过将jersey库上maven POM文件中的scope属性从提供更改为编译来解决问题。很酷jersey的hk2可能与glassfish中的有所不同:)