近来发现好多人使用前后置脚本,引用 jar 时,总是找不到方法,或者方法内找不到引用,所以写这篇文章
如果报找不到方法名称 (not found in namespace),大概率是包打的不对,反编译或者解压 jar 包,查看包的结构,已经是否打包成功。
异常:NoClassDefFoundError
出现这个异常,是因为客户打包方法错误,没有把引用的第三方 jar 包打到要用的 jar 包里面,解决:
1.修改 pom.xml 文件
在文件末尾加上打包插件声明
//
//
//
// maven-assembly-plugin
//2.6
//
//
// jar-with-dependencies
//
//
//
// Main.Main
//
//
//
//
//
// make-assembly
// package
//
// single
//
//
//
//
//
//
2.使用 assembly 打包 先使用 clean 清除 然后使用 assembly 打包
3.打完包会根据配置,可能生成两个 jar 包,如果你有用 maven 引用外部 jar,使用 *-with-dependencies.jar 包即可。
4.如果要打包的项目依赖其他项目打包的 jar,需要添加 file -> project-structure... -> Libraries,点击 + 号添加对应的 jar 到项目,还需要再 pom.xml 再引用一下
直到 Dependencies 出现对应的 jar 即可。
5.如果项目中使用 junit,导致打包失败
勾选上 Skip Tests 即可
6.检查下 jar 包结构和 class 文件,看看是否修改。