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

NoClassDefFounderRorr.如何设置依赖关系并部署java应用程序?

曹旭东
2023-03-14

我的Java应用程序需要org.objectweb.asm库。我在POM中指定了“ASM”依赖项。它将库与应用程序一起部署。尽管如此,该应用程序仍抛出异常NoClassDefFounderRor:org/objectWeb/asm/ClassVisitor。

java.lang.NoClassDefFoundError: org/objectweb/asm/ClassVisitor
    at com.sun.jersey.api.core.PackagesResourceConfig.init(PackagesResourceConfig.java:112)
    at com.sun.jersey.api.core.PackagesResourceConfig.<init>(PackagesResourceConfig.java:78)
... many more

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

详细信息:我使用的是Glassfish 2.1.1。该应用程序需要泽西1.1.4,泽西需要ASM3.1。我假设glassfish 2.1.1需要1.1.4版本

如果我运行Glassfish updatetool并在服务器上安装Jersey,那么我的应用程序将不会出现任何问题。我的客户没有在他们的服务器上安装泽西,他们不能使用UpdateTool。

Glassfish 2.1.1 updatetool在Glassfish/lib目录中安装jersey 1.1.4和ASM-3.1.jar。卸载jersey时,updatetool也会删除asm。

如果我包含jersey和asm作为依赖项并部署war文件,那么jersey和asm JAR将进入本地位置,例如glassfish/domains/domain1/applications/j2ee-modules/myappname/web-inf/lib/asm-3.1.jar。

Glassfish updatetool将asm放入lib文件夹:Glassfish/lib目录,应用程序开始部署并正常工作。

下面是我的maven pom文件依赖项部分:

<dependencies>
    <dependency>
        <groupId>asm</groupId>
        <artifactId>asm</artifactId>
        <version>3.1</version>
    </dependency>

    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-bundle</artifactId>
        <version>1.1.4</version>
    </dependency>

    <dependency>
        <groupId>com.sun.jersey.jersey-test-framework</groupId>
        <artifactId>jersey-test-framework-grizzly2</artifactId>
        <version>1.17.1</version>
                    <scope>test</scope>
    </dependency>
    <dependency>  
                <groupId>javax.persistence</groupId>  
                <artifactId>persistence-api</artifactId>  
                <version>1.0</version>  
        <scope>provided</scope>
            </dependency>  
    <dependency>
        <groupId>org.jboss.spec</groupId>
        <artifactId>jboss-javaee-6.0</artifactId>
        <version>1.0.0.Final</version>
        <scope>provided</scope>
        <type>pom</type>
    </dependency>
            <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>        
</dependencies>

共有1个答案

司空繁
2023-03-14
glassfish/lib/jersey-bundle-1.0.3.1.jar
glassfish/domains/domain1/applications/j2ee-modules/MYAPPNAME/WEB-INF/lib/
logger.debug(PackagesResourceConfig.class.getResource("PackagesResourceConfig.class"));
 类似资料:
  • 问题内容: 通过不将数十个JAR依赖项包装到lib目录中,OSGi似乎具有一个小的可部署工件的巨大好处。但是,我找不到任何能告诉我一种简单,可靠的方式来将依赖项部署到容器的方法。例如,我有一个使用CXF和几个Spring子项目的应用程序。如果需要将此应用程序部署到新的Glassfish服务器上,那么最好的方法是确保安装所有依赖项? 我正在使用Maven, 似乎 可以使用某种方法来查看META-IN

  • 问题内容: 我正在使用Airflow计划批处理作业。我有一个DAG(A)每晚运行,另一个DAG(B)每月运行一次。B取决于A已成功完成。但是B需要很长时间才能运行,因此我想将其保存在单独的DAG中,以实现更好的SLA报告。 如何使运行DAG B依赖于同一天DAG A的成功运行? 问题答案: 您可以使用名为ExternalTask​​Sensor的运算符来实现此行为。将安排DAG(B)中的任务(B1

  • 我有两个网络应用程序,它们部署在同一个野蝇中。这两个webapp都应该共享某些库,这些库不属于野蝇模块的一部分。 为了使部署不依赖于特定的wildfly,我不希望通过wildfly模块系统提供共享库(我知道,用户可以定义模块)。 我的方法是简单地将库和两个webapp放在部署目录中,并在各自的jboss部署结构中引用它们。然而,这失败了。 我试图将该库嵌入到战争中,并通过 由于找不到模块,因此它将

  • 编写的PHP扩展需要需要依赖另外一个扩展,在PHP-X中可以调用Extension->require来实现。 PHPX_EXTENSION() { Extension *ext = new Extension("test", "0.0.1"); ext->require("swoole"); ext->require("sockets"); return ext;

  • 依赖关系 这是一个非常轻量级的模块,没有其他依赖项。希望大家在JVM或Android上使用以太坊的RLP编码的项目时会选择使用这个模块,而不再编写自己的实现。

  • 依赖关系 ABI一个非常轻量级的模块,唯一的第三方依赖是 Bouncy Castle,用于hash加密 (Spongy Castle on Android)。 最后希望java和安卓开发者,在JVM或Android上有以太坊ABI合作的项目时会选择使用这个模块,而不是再编写自己的实现。