Exception GWT&x2B;番石榴;JBoss:分派传入RPC调用时类装入器异常

Exception GWT&x2B;番石榴;JBoss:分派传入RPC调用时类装入器异常,exception,gwt,jboss,guava,rpc,Exception,Gwt,Jboss,Guava,Rpc,我已经设置了一个GWT应用程序,该应用程序部署到JBoss服务器上,并且(通常)根据需要执行。它基于Maven,分为服务器和web模块。由于我最近被介绍到Guava库,并且由于它与GWT兼容,我决定将它包括在我的项目中 在尝试将Guava类可选对象从服务器发送到web时,不幸的是,jBoss控制台上出现了以下错误消息: 分派传入RPC调用时发生异常: com.google.gwt.user.server.rpc.UnexpectedException:服务方法“public abstract c

我已经设置了一个GWT应用程序,该应用程序部署到JBoss服务器上,并且(通常)根据需要执行。它基于Maven,分为服务器和web模块。由于我最近被介绍到Guava库,并且由于它与GWT兼容,我决定将它包括在我的项目中

在尝试将Guava类可选对象从服务器发送到web时,不幸的是,jBoss控制台上出现了以下错误消息:

分派传入RPC调用时发生异常:

com.google.gwt.user.server.rpc.UnexpectedException:服务方法“public abstract com.google.common.base.Optional com.company.project.client.rpc.ProjectService.getSearchWords(java.lang.String)”引发意外异常:

java.lang.LinkageError:加载程序约束冲突:解析接口方法“com.company.project.service.ProjectController.getSearchWords(Ljava/lang/String;)Lcom/google/common/base/Optional;”时

当前类com/company/project/server/ProjectServlet的类加载器(org/jboss/modules/ModuleClassLoader实例)和已解析类com/company/project/service/ProjectController的类加载器(org/jboss/modules/ModuleClassLoader实例)对于va/lang/String类型具有不同的类对象;)Lcom/google/common/base/Optional;在签名中使用

这是ProjectService.java文件中包含的行:

Optional<Set<String>> getSearchWords( String token );
可选的getSearchWords(字符串标记);
ProjectController.java(ProjectControllerBean.java的接口)中的模拟方法签名看起来是一样的

这个问题只会与番石榴类“可选”一起出现。任何其他RPC方法都可以很好地工作

有人知道可能发生了什么以及如何解决吗?我真的很高兴能得到任何帮助

提前谢谢

编辑#1

我想这可能与jboss提供的Guava库的过时版本有关,它可能是通过ModuleClassLoader加载的。但不幸的是,我一直未能通过jboss-deployment-structure.xml禁用自动功能:(

我将该文件放入我的EAR的src/main/application中,内容如下:

<jboss-deployment-structure>
    <deployment>
        <exclusions>
            <module name="com.google.guava" />
        </exclusions>
    </deployment>

    <sub-deployment name="project-server.jar">
        <exclusions>
            <module name="com.google.guava" />
        </exclusions>
    </sub-deployment>
</jboss-deployment-structure>


jboss部署结构.xml需要位于EAR的
META-INF
目录中。如果您的maven项目是
src/main/resources/META-INF
目录中。

据我所知,用于构建项目的库对于同一对象具有不同的.class文件。请检查您构建的jvm与项目运行的jvm相同?这是我唯一的猜测,尽管这通常会导致错误的版本号异常。根据本文()的说法,它不一定是该目录。但我也尝试过,问题仍然存在:(由于某些原因,模块排除无法正常工作。添加依赖项(jboss包括Guava依赖项)在另一方面也会产生影响。啊,我的错误,我指定的位置是战争所需的。您是否打开EAR存档以验证jboss-deployment-structure.xml是否在META-INF目录中?