首页 > 编程语言 >Proguard混淆java代码遇到的一些问题

Proguard混淆java代码遇到的一些问题

时间:2022-10-19 14:23:16浏览次数:96  
标签:混淆 java 代码 jar Entity Proguard classes

公司让研究一下java代码混淆相关的东西,随即搜索能做代码混淆的相关工具,于是发现了proguard,经过两天时间的研究与试验才将代码混淆做好并解决构建后发现的问题。下面是一些过程中遇到的几个问题。

 

混淆执行生命周期:该项目在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()。

暂时就这么多了。过程中还遇到一些其他问题,做的时候忘记了记录,现在也想不起来了,就先把还有印象的先写下来。

ProGuard Manual: Home | Guardsquare,proguard的官网手册。

 

标签:混淆,java,代码,jar,Entity,Proguard,classes
From: https://www.cnblogs.com/eva1/p/16806065.html

相关文章

  • java学习笔记39
    面向对象instanceof和类型转换instanceofpublicclassApplication{  publicstaticvoidmain(String[]args){    //System.out.println(xinstanceof......
  • Android打包混淆笔记
    Proguard介绍AndroidSDK自带了混淆工具Proguard。它位于SDK根目录\tools\proguard下面。ProGuard是一个免费的Java类文件收缩,优化,混淆和预校验器。它可以检测并删除未使......
  • JavaScript数组常用数组函数
    constarr=[1,12,13,4,5,6,7,8];//找出符合条件的第一个元素,并返回。否返回undefinedconstfount=arr.find((x)=>{returntypeof(x)==="number";})consol......
  • Java Lambda 表达式的各种形态和使用场景,看这篇就够了
    Lambda表达式是Java8中添加的功能。引入Lambda表达式的主要目的是为了让Java支持函数式编程。Lambda表达式是一个可以在不属于任何类的情况下创建的函数,并且可以......
  • 【JAVA】接口和抽象类有什么区别?
    ##前言Java是非常典型的面向对象语言,曾经有一段时间,程序员整天把面向对象、设计模式挂在嘴边。虽然如今大家对这方面已经不再那么狂热,但是不可否认,掌握面向对象设计原则和......
  • 【Java复健指南06】OOP中级01-封装、继承、super
    注:从OOP中级部分开始使用IDEA构建代码封装封装的实现步骤1)将属性进行私有化private【不能直接修改属性】2)提供一个公共的set方法,用于对属性判断并赋值publicvoids......
  • Demo38_java数组05_前半段
    //数组与for循环的基本操作运行packagecom.HuanXin.array_6;publicclassDemo03{publicstaticvoidmain(String[]args){int[]A={1,2,3,4,5};......
  • Java——程序包不存在【三种解决方法】
    Java——程序包不存在【三种解决方法】 目录一、问题描述二、解决方案 方法一:maven包管理的clean方法  方法二:清理缓存  方法三:设置配置三、结语一、......
  • Error:(5, 23) java: 无法将类 com.java.Student中的构造器 Student应用到给定类型;
       该问题则是把int类型的age和学号的传参搞错了,对于int类型的数据去掉引号则可以运行。反思到细小的问题都会导致不同的结果 ......
  • java == 时间日期类
    时间日期类--Date类计算机中时间原点1970年1月1日00:00:00时间换算单位1秒=1000毫秒Date类概述Date代表了一个特定的时间,精确到毫秒构造方法方法名......