You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用嵌入式GlassFish创建EJBContainer时出现类加载警告求助

解决Embedded GlassFish启动时类加载警告问题

我在main()方法中使用Embedded GlassFish依赖创建EJBContainer以获取测试所需的EJB,按步骤操作后出现类加载相关警告,具体信息如下:

5:37:27 AM org.glassfish.web.embed.impl.ScatteredWebArchivist$EmbeddedWebScanner process
WARNING: Cannot load class com/sun/msv/scanner/dtd/EntityDecl.class
java.lang.ClassNotFoundException: ner.dtd.EntityDecl

5:37:27 AM org.glassfish.web.embed.impl.ScatteredWebArchivist$EmbeddedWebScanner process
WARNING: Cannot load class com/sun/msv/reader/trex/ng/RestrictionChecker$DuplicateAttributesChecker.class

etc.

测试代码:

public class Test{
    public static void main(String[] args) {
     try (EJBContainer container = EJBContainer.createEJBContainer(props)) {
            MyBean myBean = (MyBean) container.getContext().lookup("java:module/MyBean");
            System.out.println(myBean.getNumber());
        } catch (NamingException e) {
            throw new RuntimeException(e);
        }
    }
}

使用的GlassFish依赖配置:

<dependency>
     <groupId>org.glassfish.main.extras</groupId>
     <artifactId>glassfish-embedded-all</artifactId>
     <version>7.0.11</version>
     <scope>test</scope>
</dependency>

解决方案

这些警告源于glassfish-embedded-all包中缺少MSV(Multi-Schema Validator)相关依赖类,可通过以下两种方式解决:

  1. 添加MSV完整依赖
    直接在pom.xml中引入MSV的依赖包,补全缺失的类:
<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-msv</artifactId>
    <version>4.0.4</version>
    <scope>test</scope>
</dependency>
  1. 跳过Web归档扫描
    如果你的测试场景不需要Web组件,可通过设置属性跳过Web扫描,从根源避免触发类加载检查:
    在创建EJBContainer前添加属性配置:
Properties props = new Properties();
props.setProperty(EJBContainer.PROVIDER, "org.glassfish.ejb.embedded.EJBContainerProviderImpl");
props.setProperty("org.glassfish.ejb.embedded.skip-web-scanning", "true");

说明:添加MSV依赖能彻底解决类缺失问题;跳过Web扫描则更轻量化,适合纯EJB测试场景。

内容的提问来源于stack exchange,提问作者Steffano Aravico

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 18:24:57