【问题标题】:Deploy war failure on glassfish 4.1在 glassfish 4.1 上部署战争失败
【发布时间】:2023-03-21 03:20:01
【问题描述】:

在 Glassfish 4.1 上部署战争时,我收到以下错误:

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-locator 库。为什么会出现这样的错误?

【问题讨论】:

    标签: deployment hk2 glassfish-4.1


    【解决方案1】:

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

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

    http://mvnrepository.com/artifact/org.glassfish.hk2/hk2-locator/2.1.9

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

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

    mvn dependency:tree
    

    【讨论】:

    • Maven 依赖树报告“org.glassfish.hk2:hk2-locator:jar:2.4.0-b10:provided”。 jar 库位于 目录中。库不在应用程序类路径中是否正常?
    • 您的项目中和 glassfish 上的 hk2-locator 版本可能不同。如果 glassfish 版本没有更改类或包装,则会抛出该错误。
    • 可以肯定的是,glassfish 安装的版本是相同的哦 HK2 库。应用程序类加载器没有列出 glassfish 模块库。正常吗?可能是缺少配置?
    • 我通过将球衣库的 maven POM 文件中的 scope 属性从提供更改为编译来解决问题。
    • 很酷,球衣的 hk2 可能与 glassfish 的 hk2 有所不同 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-06
    • 1970-01-01
    • 2015-11-18
    • 2018-06-28
    • 1970-01-01
    相关资源
    最近更新 更多