Caused by: java.lang.ClassNotFoundException: org.objectweb.asm.Type異常
阿新 • • 發佈:2020-07-12
今天做了一個Map轉java物件的例子,用了一種比較簡單的方法,就是通過net.sf.cglib.beans.BeanMap類中的方法進行轉換。結果在一切準備就緒,執行的時候報錯了,如下:
Exception in thread "main" java.lang.NoClassDefFoundError: org/objectweb/asm/Type at net.sf.cglib.core.TypeUtils.parseType(TypeUtils.java:184) at net.sf.cglib.core.KeyFactory.<clinit>(KeyFactory.java:66) at net.sf.cglib.beans.BeanMap$Generator.<clinit>(BeanMap.java:64) at net.sf.cglib.beans.BeanMap.create(BeanMap.java:56) at com.example2.pojo.MapToPojo.mapToBean(MapToPojo.java:27) at com.example2.pojo.MapToPojo.main(MapToPojo.java:18) Caused by: java.lang.ClassNotFoundException: org.objectweb.asm.Type at java.net.URLClassLoader$1.run(URLClassLoader.java:200) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:188) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:252) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) ... 6 more
先貼上本例的主要程式碼吧:
package com.example2.pojo; import java.util.HashMap; import java.util.Map; import net.sf.cglib.beans.BeanMap; public class MapToPojo { /** * @param args */ public static void main(String[] args) { Map<String,Object> map = new HashMap<String,Object>(); map.put("name","張三"); map.put("age",30); try { Employee employee = (Employee) mapToBean(map,Employee.class); System.out.print(employee.toString()); } catch (Exception e) { e.printStackTrace(); } } public static Object mapToBean(Map<String,Object> map,Class<?> beanClass) throws Exception { Object object = beanClass.newInstance(); BeanMap beanMap = BeanMap.create(object); beanMap.putAll(map); return object; } }
Employee類:
package com.example2.pojo; public class Employee { private String name; private Integer age; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } @Override public String toString() { return "Employee [name=" + name + ",age=" + age + "]"; } }
從錯誤資訊上看,是缺少了org.objectweb.asm.Type類,那麼找一個就OK了,從網上下載了com.springsource.org.objectweb.asm-3.2.0.jar包,引入後,再次執行,成功。
補充:其實專案中已引入的spring-core-4.1.7.RELEASE.jar包中也已經集成了cglib模組,如圖:
引用這個包裡的BeanMap類也可以,
import org.springframework.cglib.beans.BeanMap;
執行後,達到同樣效果。
到此這篇關於Caused by: java.lang.ClassNotFoundException: org.objectweb.asm.Type異常的文章就介紹到這了,更多相關org.objectweb.asm.Type異常內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!