java proguard 使用_使用proguard混淆java9代码
序
本文主要研究一下如何使用proguard混淆java9代码
maven
com.github.wvengen
proguard-maven-plugin
package
proguard
6.0.1
${project.build.finalName}.jar
${project.build.finalName}.jar
!META-INF/maven/**,!module-info.class
true
${project.basedir}/proguard.cfg
${java.home}/jmods/java.base.jmod(!**.jar;!module-info.class)
net.sf.proguard
proguard-base
6.0.1
runtime
这里使用6.0.1版本的proguard-base
proguard.cfg
-target 9
-dontshrink
-dontoptimize
-useuniqueclassmembernames
-adaptclassstrings
-dontusemixedcaseclassnames
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*,EnclosingMethod
-keepclasseswithmembers public class * { public static void main(java.lang.String[]);}
这里target要指定为9版本
问题
duplicate class definitions
[proguard] Warning: class [META-INF/versions/9/org/apache/logging/log4j/util/ProcessIdUtil.class] unexpectedly contains class [org.apache.logging.log4j.util.ProcessIdUtil]
[proguard] Reading library jar [/Users/demo/.m2/repository/org/apache/logging/log4j/log4j-to-slf4j/2.10.0/log4j-to-slf4j-2.10.0.jar]
[proguard] Reading library jar [/Users/demo/.m2/repository/org/apache/logging/log4j/log4j-api/2.10.0/log4j-api-2.10.0.jar]
[proguard] Note: duplicate definition of library class [org.apache.logging.log4j.util.ProcessIdUtil]
[proguard] Note: duplicate definition of library class [org.apache.logging.log4j.util.StackLocator]
[proguard] Reading library jar [/Users/demo/.m2/repository/org/slf4j/jul-to-slf4j/1.7.25/jul-to-slf4j-1.7.25.jar]
[proguard] Reading library jar [/Users/demo/.m2/repository/javax/annotation/javax.annotation-api/1.3.2/javax.annotation-api-1.3.2.jar]
[proguard] Warning: class [META-INF/versions/9/org/apache/logging/log4j/util/StackLocator.class] unexpectedly contains class [org.apache.logging.log4j.util.StackLocator]
[proguard] Note: there were 2 duplicate class definitions.
[proguard] (http://proguard.sourceforge.net/manual/troubleshooting.html#duplicateclass)
[proguard] Warning: there were 2 classes in incorrectly named files.
[proguard] You should make sure all file names correspond to their class names.
[proguard] The directory hierarchies must correspond to the package hierarchies.
[proguard] (http://proguard.sourceforge.net/manual/troubleshooting.html#unexpectedclass)
[proguard] If you don't mind the mentioned classes not being written out,
[proguard] you could try your luck using the '-ignorewarnings' option.
[proguard] Error: Please correct the above warnings first.
如果没有使用到log4j的话,可以在progurard.cfg文件中配置dontwarn忽略
can't find referenced class
[proguard] Warning: cn.example.Demo: can't find referenced class java.io.ByteArrayOutputStream
[proguard] Warning: there were 858 unresolved references to classes or interfaces.
[proguard] You may need to add missing library jars or update their versions.
[proguard] If your code works fine without the missing classes, you can suppress
[proguard] the warnings with '-dontwarn' options.
[proguard] (http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedclass)
[proguard] Warning: there were 1 unresolved references to library class members.
[proguard] You probably need to update the library versions.
[proguard] (http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedlibraryclassmember)
[proguard] Error: Please correct the above warnings first.
这种多半是没有配置好libraryjars的问题,比如这里就是没有配置java.base.jmod的问题。如果还依赖有其他jmod,可以根据具体日志修改配置。
Can't read java.base.jmod
[proguard] Reading library directory [/Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home/jmods/java.base.jmod(!**.jar;!module-info.class)]
[proguard] Error: Can't read [/Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home/jmods/java.base.jmod(!**.jar;!module-info.class)] (No such file or directory: /Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home/jmods/java.base.jmod(!**.jar;!module-info.class))
这个是在maven的pom文件配置lib引起的
${java.home}/jmods/java.base.jmod(!**.jar;!module-info.class)
可能是该plugin的问题,将其配置移到proguard.cfg就可以
-libraryjars /jmods/java.base.jmod(!.jar;!module-info.class)
小结
这里的例子仅仅还是jdk是模块化的,但是工程代码还没有模块化。等所有依赖都模块化了,可以重新试验一下。
doc
java proguard 使用_使用proguard混淆java9代码相关推荐
- java proguard_使用proguard混淆java9代码
序 本文主要研究一下如何使用proguard混淆java9代码 maven com.github.wvengen proguard-maven-plugin package proguard 6.0. ...
- java单行字符_十个便捷的单行代码编程技巧
1.对列表/数组中的每个元素都乘以2// www.1b23.com Range是半开区间 int [] ia = range(1, 10).map(i -> i * 2).toArray(); ...
- java求水电费_水电煤缴费示例代码
水电煤缴费 package api.jisuapi.waterelectricrecharge; import java.io.UnsupportedEncodingException; import ...
- java vb 速度_使用VB.NET加快代码开发速度
以前在学校时,编写代码都是使用C#,习惯了C#的代码习惯,等工作后由于工作需要逐渐的开始采用了VB.NET开发项目,渐渐地喜欢上了VB.NET,现在我就罗列一些VB.NET加速代码开发的方法. 一.智 ...
- java实现二叉查找树_二叉查找树BST----java实现(示例代码)
二叉查找树BST----java实现 1.二叉查找树简单介绍 二叉查找树又名二叉搜索树和二叉排序树.性质例如以下: 在二叉查找树中: (01) 若随意节点的左子树不空,则左子树上全部结点的值均小于它的 ...
- java旋转太极图_如何用CSS纯代码画一个旋转的太极图(附代码)
这是一个中国人都非常熟悉的图案--太极图,它分为阴阳两级,会旋转(用到css3 animation动画属性),此图通过css3纯代码实现,它由 若干个小圆组合而成,适合初学css3的人练练手,娱以 致 ...
- 如何快速阅读java源码_如何进行快速阅读代码
每个程序员所写的代码都有自己的风格,而我们在参考别人的代码的时候,如何能更快速更好地读懂和自己编程风格的代码呢?下面小编为你整理如何快速阅读代码,希望能帮到你. 快速阅读代码方法 1.阅读源代码的说明 ...
- js混淆还原工具_[原创JS混淆downloader代码还原
好久没发贴了,来水一贴吧. 1.样本代码function UP(m) { var nUX = "charA"; var luz = "t"; var c = n ...
- java const用法_尽可能使用const(示例代码)
1.const用于定义常量 编译器可以对其进行静态数据类型检查 2.const可用于修饰形式参数 若你在编写函数时,并没有打算改变参数,这是就应该将参数的类型设置为const reference,这样 ...
最新文章
- Nature综述:真菌的多样性:真菌的高通量测序及鉴定
- Python 学习日记5
- 如何让tomcat只支持ipv4
- 计算机系统结构相关技术,计算机系统结构第1章技术总结.pptx
- Uboot USB模式(RK3288变砖头的解决办法)
- 怎样才能培养孩子良好的用餐习惯
- java判断float相等_在java中判断两个浮点型(float)数据是否相等的案例
- 【二级指针--定义、初始化赋值、解引用;特殊指针--空指针、void类型的指针】(学习笔记12--指针下)
- 12届毕业生回顾我的2012年,给2013届同学一点启迪
- Java SE Technologies at a Glance
- 取一行多列数据中的最大值
- win7修改开机动画
- 计算机音乐数字乐谱核爆神曲,核爆神曲——aLIEz钢琴谱钢琴简谱 数字谱 钢琴双手简谱.pdf...
- 如何制作标识标志标签
- 高数笔记(六):拉格朗日中值定理,柯西中值定理,洛必达法则,泰勒定理
- MySQL 关于时间设置注意事项
- linux防火墙设置命令,linux防火墙设置命令是什么
- 网站服务器不缴费会清档吗,云服务器不缴费释放
- python怎么定义一个整数_python整数实现
- 存储连接应用服务器简单入门
热门文章
- 微分方程在matlab中的实现,Matlab微分方程参数优化的Forcal实现
- linux qt 添加.so,Linux环境下qt/qt creator添加OpenCV的配置
- 【51单片机快速入门指南】6.3:DS18B20 单总线数字温度计的多路读取
- android开发工具下载
- 向DataGridView中添加新的一行数据,可以添加到最后一行或作为第一行
- Linux 命令出现号(大于号)如何退出
- linux input/output error
- 小程序设置header cookie
- [react] 简要描述下你知道的react工作原理是什么?
- [react] react中的setState是同步还是异步的呢?为什么state并不一定会同步更新?