当前位置: 首页 > 知识库问答 >
问题:

RMIIO和NoClassDefFoundError

郜琦
2023-03-14

我试图将一个文件从客户端(JSE)上传到服务器应用程序(JavaEE、EJB、Wildfly)。我尝试使用本页中的第一个示例,但当我尝试在Wildfly服务器上运行服务器应用程序时,出现以下错误:

19:08:30,077 ERROR[org.jboss.msc.service.fail](MSC服务线程1-1)MSC000001:无法开启服务jboss.deployment.unit.ProjectEngineerServer.jar。POST_MODULE:org.jboss.msc.service.StartExcema在服务jboss.deployment.unit."ProjectEngineerServer.jar"。POST_MODULE: JBAS018733:未能在org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:166)处理部署"ProjectEngineerServer.jar"的阶段POST_MODULE。Final.jar:8.2.0。最终]在org.jboss.msc.service.ServiceControlllerImpl$StartTask.start服务(ServiceControlllerImpl.java:1948)[jboss-msc-1.2.2.final.jar:1.2.2。最终]在org.jboss.msc.service.ServiceControlllerImpl$StartTask.run(ServiceControlllerImpl.java:1881)[jboss-msc-1.2.2.final.jar:1.2.2。最终]在java.util.concurrent.ThreadPoolExecutor. runWorker(ThreadPoolExecutor. java: 1142)[rt. jar: 1.8.0_20]在java. util. con电流。在java. lang上运行(ThreadPoolExecator. java: 617)[rt. jar: 1.8.0_20]。线程. run(Thread. java: 745)[rt. jar: 1.8.0_20]引起:java. lang.运行时异常:JBAS018757:获取类com. system. main的反射信息时出错。用ClassLoader ModuleClassLoader for ModuleClassLoader处理Bean”部署。ProjectEngineerServer. jar: main"来自org. jboss. as. server.部署.反射的服务模块加载器。Index. getClassIndex(DeploymentReflse Index. java: 72)最终. jar: 8.2.0。最终]在org. jboss. as. ee. metada.在org. jboss. as. ee.组件.部署器上的方法注释信息(方法注释聚合器. java: 58)。处理注释(InterceptorAnnotationProcessor. java: 107),位于org. jboss. as. ee.组件。在org. jboss. as. ee. ComponentConfig(InterceptorAnnotationProcessor. java: 92)中。在org. jboss. as. server.部署(InterceptorAnnotationProcessor. java: 77)。DeploymentUnitPhaseService. start(DeploymentUnitPhaseService. java: 159)[Wildfly-server-8.2.0.最终. jar: 8.2.0。5更多原因:java. lang.NoClassDefFoundError: java. lang网站上的com/HealthMarket Science/rmiio/远程输入流。在java. lang. getDeclaredmethod 0(本机方法)[rt. jar: 1.8.0_20]。在java. lang.java: 1962)[rt. jar: 1.8.0_20]at org. jboss. as. server.部署。类反射。java: 65)[Wildfly-server-8.2.0.最终. jar: 8.2.0。最终]在org. jboss. as. server.部署。DeploymentReflse Index. getClassIndex(DeploymentReflse Index. java: 68)[Wildfly-server-8.2.0.最终. jar: 8.2.0。10更多原因:java. lang.ClassNotFoundExcema: com. HealthMarket Science. rmiio.从[模块”部署远程输入流。ProjectEngineerServer. jar: main"from Service ModuleLoader]at org. jboss. modes.ModuleClassLoader. findClass(ModuleClassLoader. java: 213)[jboss-modes. jar: 1.3.3.最终]在org. jboss. modes.[jboss模块. jar: 1.3.3.最终]在org. jboss. modes.[jboss模块. jar: 1.3.3.最终]在org. jboss. modes.performLoadClass[jboss模块. jar]最终]在org. jboss. modes.[jboss. jar: 1.3.3.最终]...15更多19:08:31,657 ERROR[org. jboss. as. Controler. Management-操作](DeploymentScanner-threads-2)JBAS014613:操作(全替换部署)失败-地址: ([]) - 失败描述:{"JBAS014671:失败的服务"=

我不明白为什么找不到这个类(com/Health Market Science/rmiio/远程输入流)。我使用Maven,并将此添加到我的pom.xml:

<dependency>
    <groupId>com.healthmarketscience.rmiio</groupId>
    <artifactId>rmiio</artifactId>
    <version>2.0.5</version>
</dependency>

所以我的项目中有RMIO库。

我怎样才能解决这个问题?

共有1个答案

邴景山
2023-03-14

我解决了这个问题。我一步一步地做了:

>

  • 我在Wildfly_HOME下创建了以下路径:WILDFLY_HOME\模块\系统\层\base\com\健康市场科学\main为rmiio库。
  • 我在main目录中添加了一个rmiio-2.0.5.jar文件和一个module.xml文件。这里是module.xml文件:

    <?xml version="1.0" encoding="UTF-8"?>
    
    <module xmlns="urn:jboss:module:1.3" name="com.healthmarketscience">
      <resources>
        <resource-root path="rmiio-2.0.5.jar"/>
      </resources>
      <dependencies>
        <module name="javax.api"/>
        <module name="javax.transaction.api"/>
      </dependencies>
    </module>
    

    我添加了一个jboss-deployment-structure.xml文件到我的项目中的META-INF目录中。这里是jboss-deployment-structure.xml文件:

    <?xml version="1.0" encoding="UTF-8"?>
    
    <jboss-deployment-structure>
        <deployment>
            <dependencies>
                <module name="com.healthmarketscience" slot="main" export="true"/>
            </dependencies>        
        </deployment>
    </jboss-deployment-structure>
    

  •  类似资料:
    • RMIIO (也叫 OpenHMS) 是一个用来通过 RMI 框架(或者其他任意RPC框架)进行大数据流通讯的开发包。尽管 RMI 大大简化了远程方法调用过程,但用来发送大文件仍不适合,因为内存占用太大。而 RMIIO 库提供了一些非常强大的类可以来解决这个问题。

    • 问题内容: 我在尝试运行Android应用程序时遇到问题,直到向其构建路径添加第二个外部库为止,该应用程序都运行良好。由于添加了scoreninja jar,当我尝试运行该应用程序时,现在出现了NoClassDefFoundError。 这是消息: 因为所有的构建脚本都是由Android工具生成的(?),所以我不确定除清理,重建或重新启动Eclipse外我还能做些什么(我已经尝试了全部三个)。有人

    • 我陷入困境是因为: java.lang.noClassDefFounderror:com.google.firebase.firebase.FirebaseApp.InitializeApp(未知来源)com.google.firebase.provider.firebaseInitializeApp(未知来源)com.google.firebase.provider.firebaseIntrov

    • 问题内容: 关于它们有很多传说。我想知道真相。以下两个示例之间有什么区别? 问题答案: 不确定从何处获得传说,但: 提交按钮 与: IE6将在标记之间提交此按钮的所有文本,其他浏览器将仅提交值。使用可使您在按钮的设计上享有更大的布局自由度。从各种意图和目的看,它乍一看似乎很棒,但是各种浏览器怪癖使它有时很难使用。 在您的示例中,IE6将发送到服务器,而其他大多数浏览器将不发送任何内容。要使其跨浏览

    • 什么区别以及如何正确重写代码?

    • 我试图理解为什么下面两个代码块会产生不同的结果。 代码块1按预期工作,并返回从数据库中查找的提供程序的数组。另一方面,代码块2返回函数数组。在理解promissione.all()和async/await时,我觉得缺少了一些简单的东西。 代码块的差异如下: > 块1:创建许诺函数数组,然后使用map运算符将其包装在异步函数中。 块2:许诺函数的数组被创建为异步函数。因此,不调用map运算符。 如果