com.android.dx.cf.iface.ParseException: class name (...) does not match path(...)

来源:互联网 发布:java基础实战 编辑:程序博客网 时间:2024/05/16 08:42

今天调试一个新版的安卓软件,无法启动,报错:

UNEXPECTED TOP-LEVEL EXCEPTION:

com.android.dx.cf.iface.ParseException: class name (com/vict/fsd/plugin/chart/BarChartView) does not match path (chart/BarChartView.class)


背景是这样的,之前从GitHub上搬过来一个插件,叫DestCharts,有几个类组成,用来生成安卓图表的,我新建了一个包,名字叫plugin,把那几个类放在包里。

现在整理新版软件,准备把这些类做成一个jar包进行引用,这样形式上更简洁。

这个jar只做了一层目录,也就是char/XXX.java这种形式,因此提示not match path(chart/BarChartView.class),那前面的class name(com/vict/fsd/plugin/chart/BarChartView)怎么理解呢?

原来是这样的:没有做成jar包之前,那几个Java文件里面的头部包目录是 com.vict.fsd.plugin.chart, 编译成.class文件之后就没变,所以当放在jar包里的时候,实际路径和类文件里面写的包路径不一样:



所以报错,解决方法是在IDE中重新建一个包,起好名字,比如:it.bradipao.lib.descharts,然后把那几个类放进去,自动编译好之后,再把.class文件拿出来重新做成jar包即可:





问题解决!

类似的,这种提示类名和路径不匹配的问题,很多都能从.class文件着手开始查。



0 0