我的Java应用程序需要org.objectweb.asm库。我在pom中指定了'asm'依赖项。将图书馆与应用程序一起部署。应用程序仍会抛出异常NoClassDefFoundError:org/objectweb/asm/ClassVisitor。NoClassDefFoundError。如何设置依赖关系并部署一个Java应用程序?
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,运动衫需要运动员3.1。我认为1.1.4版本是2.1.1的GlassFish
要求如果我运行的Glassfish updatetool并在服务器上安装泽西然后我的应用程序加载并没有问题运行。我的客户没有在他们的服务器上安装Jersey,他们不能使用updatetool。
Glassfish的2.1.1 updatetool安装球衣1.1.4和ASM-3.1.jar在GlassFish中/ lib目录下。 卸载运动衫时,updatetool也会删除asm。
如果我包括球衣和ASM的依赖和部署我的war文件然后球衣和ASM罐子进入本地位置,例如的glassfish /域/域1 /应用/ J2EE模块/ 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>
由于某些原因POM文件的部分内容从最初的文章中丢失。这包括'asm'依赖。我再次将POM标记为代码并重新保存该帖子。 – dmitri