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

TomEE Maven插件自动重载失败:Can't lookup Deployer异常求助

TomEE Maven插件自动重载失败:Can't lookup Deployer 问题解决

问题核心

从异常日志里的关键提示[Ljava.net.URI; is not whitelisted as deserializable就能定位根源:这是TomEE 9的序列化安全限制导致的——默认不允许该类进行反序列化操作,直接阻断了Deployer服务的JNDI查找流程,最终抛出Prematurely reached the end of the stream的EOF异常。

解决方案

1. 配置序列化白名单

在TomEE Maven插件中添加系统属性,放行[Ljava.net.URI;类的序列化:
修改pom.xml里的tomee-maven-plugin配置,新增<systemProperties>节点:

<plugin>
    <groupId>org.apache.tomee.maven</groupId>
    <artifactId>tomee-maven-plugin</artifactId>
    <version>9.0.0</version>
    <configuration>
        <deployOpenEjbApplication>true</deployOpenEjbApplication>
        <tomeeVersion>9.0.0</tomeeVersion>
        <tomeeClassifier>plume</tomeeClassifier>
        <synchronization>
            <extensions>
                <extension>.class</extension>
            </extensions>
        </synchronization>
        <reloadOnUpdate>true</reloadOnUpdate>
        <!-- 添加序列化白名单配置 -->
        <systemProperties>
            <property>
                <name>tomee.serialization.class.whitelist</name>
                <value>[Ljava.net.URI;</value>
            </property>
        </systemProperties>
    </configuration>
</plugin>

或者启动时直接追加JVM参数:

mvn clean install package tomee:run -Dtomee.serialization.class.whitelist=[Ljava.net.URI;

2. 简化重载触发逻辑

开启reloadOnUpdate后,插件会自动监控class文件变化,无需单独执行mvn compile。直接修改代码后,用IDE自动编译或者执行mvn compile,插件会自动触发重载流程。

3. 版本兼容性校验

确保TomEE插件版本(9.0.0)和TomEE核心版本(9.0.0)完全一致,避免版本不匹配引发的通信问题。如果问题仍存在,可以尝试升级插件到9.0.16+的稳定版,该版本修复了早期的部分序列化相关bug。

验证步骤

  1. 停止当前运行的TomEE服务
  2. 应用上述配置修改
  3. 重新执行mvn tomee:run启动服务
  4. 修改代码并触发编译(IDE自动编译或mvn compile)
  5. 观察TomEE日志,确认重载操作成功执行

内容的提问来源于stack exchange,提问作者Cléber Macieski

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 21:30:55