Java代码混淆器常见问题有:1、混淆执行生命周期;2、java.sql.SQLException: Column ‘j’ not found;3、Bean的名字冲突。混淆执行生命周期是指,该项目在maven中配置了一个插件,在process-classes周期中将一部分代码单独打成另外一个jar包,并且将该jar包复制到lib目录。
一、混淆执行生命周期
该项目在maven中配置了一个插件,在process-classes周期中将一部分代码单独打成另外一个jar包,并且将该jar包复制到lib目录。
如果在package阶段进行混淆,会导致单独打出来的jar没有被混淆(当然应该也可以配置option指定将lib中的jar包进行混淆,我没有这么试过),所以我将混淆的生命周期同样设为了process-classes并放到同属于该周期的插件的最前面,将字节码文件进行混淆之后再进行其他操作。在process-classes是进行混淆并输出到classes文件夹还有个好处,方便直接用idea启动项目进行调试。
二、java.sql.SQLException: Column ‘j’ not found:
Entity类中的属性也被混淆了,由于hibernate属性映射列名,导致进行查询的时候找不到对应的列名。所以要混淆避免Entity类,-keep class **.model.**{*},这里根据自己的Entity类的路径填写即可。
三、Bean的名字冲突
不同包下的类文件可能会混淆出同名的字节码文件,当spring注册bean的时候,beanname默认是类名。更改beanname的生成策略,可以改为全类名。生成全类名之后,项目中有一段代码也报错了,SpringContextHolder.getBean(“xxx”),参数修改为xxx.class.getName()。
延伸阅读
Java是什么
Java 是一个通用术语,用于表示 Java 软件及其组件,包括“Java 运行时环境 (JRE)”、“Java 虚拟机 (JVM)”以及“插件”。
Java具有大部分编程语言所共有的一些特征,被特意设计用于互联网的分布式环境。Java具有类似于C++语言的形式和感觉,但它要比C++语言更易于使用,而且在编程时彻底采用了一种以对象为导向的方式。
Java版本指的是 Java 系列和更新编号。示例:在网站上或者 Windows 程序中,版本显示为 Java 8 Update 25。旧版本也可显示为 1.7.0_65,这表示 Java 7 Update 65。
文章标题:Java代码混淆器有哪些常见问题,发布者:E.Z,转载请注明出处:https://worktile.com/kb/p/51752