下面举个例子,分析解决:
Exception in thread "main" java.lang.NoClassDefFoundError: freemarker/template/TemplateNotFoundException
at com.luminal.greendao.daogenerator.DaoMaker.main(DaoMaker.java:16)
Caused by: java.lang.ClassNotFoundException: freemarker.template.TemplateNotFoundException
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 1 more
Process finished with exit code 1
首先我们一看意思就是没有找到类的异常,像这种情况:要么缺少jar包 或 包名写错,才找不到类。于是我们先要看报错位置,它所在的类是否要引入此包类,没有的话就有可能是jar包没有引入其他相应的jar包而报错。
错误定位行为16,而DaoMaker类也并没有引入“freemarker”相关的jar包,
于是我command点击DaoGenerator去看它的源码,搜索关键字“freemarker”,找到 “ import freemarker.template.TemplateNotFoundException; ” ,很显然是项目引入的jar包里面缺少引入的jar包
然后我们找到“freemarker”相关的jar包即可。
找到以前实践成功的jar包,Reveal in Finder,复制到当前项目的libs目录下,Add as Library即可