Java代码混淆器有哪些常见问题

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
E.Z的头像E.Z

发表回复

登录后才能评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部