[已解决]Caused by: java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit(IILjava/lang/Strin

本文介绍了解决MyEclipse中SSH集成时因asm-2.2.3.jar导致的包冲突问题的方法,包括移除特定jar包及重启Tomcat等步骤。

在myeclipse中导入项目遇到下面的提示(耗费了好长时间解决,因为我什么都不懂)

严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V
Caused by: java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V
    at net.sf.cglib.core.ClassEmitter.begin_class(ClassEmitter.java:77)
    at net.sf.cglib.core.KeyFactory$Generator.generateClass(KeyFactory.java:173)
    at net.sf.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25)
    at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:216)
    at net.sf.cglib.core.KeyFactory$Generator.create(KeyFactory.java:145)
    at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:117)
    at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:108)
    at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:104)
    at net.sf.cglib.proxy.Enhancer.<clinit>(Enhancer.java:69)
    at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.getProxyFactory(CGLIBLazyInitializer.java:117)
    at org.hibernate.proxy.pojo.cglib.CGLIBProxyFactory.postInstantiate(CGLIBProxyFactory.java:43)
    at org.hibernate.tuple.entity.PojoEntityTuplizer.buildProxyFactory(PojoEntityTuplizer.java:162)
    at org.hibernate.tuple.entity.AbstractEntityTuplizer.<init>(AbstractEntityTuplizer.java:135)
    at org.hibernate.tuple.entity.PojoEntityTuplizer.<init>(PojoEntityTuplizer.java:55)
    at org.hibernate.tuple.entity.EntityEntityModeToTuplizerMapping.<init>(EntityEntityModeToTuplizerMapping.java:56)
    at org.hibernate.tuple.entity.EntityMetamodel.<init>(EntityMetamodel.java:295)
    at org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:434)
    at org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:109)
    at org.hibernate.persister.PersisterFactory.createClassPersister(PersisterFactory.java:55)
    at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:226)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1294)
    at org.springframework.orm.hibernate3.LocalSessionFactoryBean.newSessionFactory(LocalSessionFactoryBean.java:805)
    at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:745)
    at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:134)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1202)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1172)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:428)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:251)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:156)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:248)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:284)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:352)
    at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:244)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:187)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4994)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5492)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:649)
    at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1245)
    at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1895)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
    at java.lang.Thread.run(Thread.java:662)
2017-6-7 9:14:23 org.apache.catalina.core.StandardContext startInternal

这个时候百度造成的原因
Caused by :java.lang.NoSuchMethodError:org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V
会有很多提示ssh集成的时候导入的包冲突了,需要删除asm-2.2.3.jar,具体的操作如下
(参考:http://bbs.youkuaiyun.com/topics/340146205
如果不按照这个流程执行,asm-2.2.3.jar就会自动生成,反反复复,苦不堪言

1、关闭tomcat

去tomcat的安装路径下的bin文件,然后运行shutdown.bat, 例如:我的路径是D:\soft\apache-tomcat-7.0.57\bin
这里写图片描述

2、部署项目

先remove再add
这里写图片描述

3、去tomcat下的webapps下找到你的项目

注意,是tomcat的安装路径,例如 D:\soft\apache-tomcat-7.0.57\webapps\项目名\WEB-INF\lib

4、移除WEB-INF下的libasm-2.2.3

这里写图片描述

5、启动tomcat

和步骤1一样,点击startup.bat
这里写图片描述

6、运行

运行的时候成功

感想:做什么事情都需要懂原理才行,就像磨刀不误砍柴功,加油

这个异常: ``` Caused by: java.lang.NoClassDefFoundError: org/jsoup/nodes/Node ``` 表示你的程序在运行时 **找不到 `org.jsoup.nodes.Node` 这个类**,尽管编译时是存在的。这是典型的 **依赖缺失问题**。 --- ## 🔍 问题分析 - `jsoup` 是一个用于解析 HTML 的 Java 库。 - `org.jsoup.nodes.Node` 是 jsoup 核心包中的基础类。 - 出现 `NoClassDefFoundError` 意味着:**JVM 在启动或执行过程中无法加载该类**,通常是因为 **运行时 classpath 中缺少对应的 jar 包**。 --- ## ✅ 解决方案 ### ✅ 方案一:添加 Jsoup 依赖(推荐) 根据你使用的构建工具,添加 `jsoup` 依赖。 #### 如果使用 **Maven** 在 `pom.xml` 中加入: ```xml <dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.17.2</version> <!-- 推荐最新稳定版 --> </dependency> ``` 然后执行: ```bash mvn clean compile mvn dependency:copy-dependencies ``` 确保 jar 被正确打包进项目。 --- #### 如果使用 **Gradle** 在 `build.gradle` 中添加: ```groovy implementation 'org.jsoup:jsoup:1.17.2' ``` 然后同步项目。 --- ### ✅ 方案二:手动下载并添加 JAR 到类路径(不推荐,仅临时用) 如果你不用构建工具(如直接 `javac` + `java`): 1. 访问 [https://jsoup.org/download](https://jsoup.org/download) 2. 下载 `jsoup-1.17.2.jar` 3. 将其放入项目目录,例如 `lib/jsoup-1.17.2.jar` 4. 编译和运行时显式指定 classpath: ```bash javac -cp ".;lib/jsoup-1.17.2.jar" YourClass.java java -cp ".;lib/jsoup-1.17.2.jar" YourClass ``` > ⚠️ 注意:Windows 使用分号 `;`,Linux/Mac 使用冒号 `:` --- ### ✅ 方案三:确保 Jar 被正确打包进最终的 Fat Jar / WAR 如果你打成了 `jar` 包并运行时报错: ```bash java -jar your-app.jar ``` 但提示 `NoClassDefFoundError`,说明依赖没有被打进去。 #### 解决方法:使用 Maven Shade Plugin 打成可执行 Fat Jar 在 `pom.xml` 中添加插件: ```xml <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.5.0</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <mainClass>com.yourcompany.MainClass</mainClass> </transformer> </transformers> </configuration> </execution> </executions> </plugin> </plugins> </build> ``` 然后构建: ```bash mvn clean package ``` 生成的 `target/your-app-1.0-SNAPSHOT.jar` 就包含了所有依赖(包括 jsoup),可以独立运行。 --- ## 🛠 常见排查步骤 | 步骤 | 操作 | |------|------| | 1 | 查看完整堆栈,确认哪一行代码触发了该错误 | | 2 | 检查 `pom.xml` 是否真的添加了 jsoup 依赖 | | 3 | 执行 `mvn dependency:tree` 查看是否成功引入 | ```bash mvn dependency:tree | grep jsoup ``` 输出应类似: ``` \[INFO] +- org.jsoup:jsoup:jar:1.17.2:compile ``` | 4 | 检查最终 jar 包中是否有 jsoup 类文件 | ```bash jar -tf target/your-app.jar | grep "org/jsoup/nodes/Node.class" ``` 如果没有输出,说明没打进包。 | 5 | 确保 IDE 没有缓存旧类路径(IntelliJ: File → Invalidate Caches) | --- ## 💡 示例:正确使用 Jsoup 的代码 ```java import org.jsoup.Jsoup; import org.jsoup.nodes.Document; public class HtmlParser { public static void main(String[] args) { try { Document doc = Jsoup.connect("https://example.com").get(); System.out.println(doc.title()); } catch (Exception e) { e.printStackTrace(); } } } ``` 只要依赖正确,就不会报 `NoClassDefFoundError`。 --- ## ❗ 特别注意 - `NoClassDefFoundError` ≠ `ClassNotFoundException` - `NoClassDefFoundError`:类曾经存在但初始化失败(如静态块出错)或运行时找不到 - 本例通常是“运行时缺 jar” --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值