本文主要研究一下如何使用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代码相关推荐

  1. java proguard_使用proguard混淆java9代码

    序 本文主要研究一下如何使用proguard混淆java9代码 maven com.github.wvengen proguard-maven-plugin package proguard 6.0. ...

  2. java单行字符_十个便捷的单行代码编程技巧

    1.对列表/数组中的每个元素都乘以2//  www.1b23.com Range是半开区间 int [] ia = range(1, 10).map(i -> i * 2).toArray(); ...

  3. java求水电费_水电煤缴费示例代码

    水电煤缴费 package api.jisuapi.waterelectricrecharge; import java.io.UnsupportedEncodingException; import ...

  4. java vb 速度_使用VB.NET加快代码开发速度

    以前在学校时,编写代码都是使用C#,习惯了C#的代码习惯,等工作后由于工作需要逐渐的开始采用了VB.NET开发项目,渐渐地喜欢上了VB.NET,现在我就罗列一些VB.NET加速代码开发的方法. 一.智 ...

  5. java实现二叉查找树_二叉查找树BST----java实现(示例代码)

    二叉查找树BST----java实现 1.二叉查找树简单介绍 二叉查找树又名二叉搜索树和二叉排序树.性质例如以下: 在二叉查找树中: (01) 若随意节点的左子树不空,则左子树上全部结点的值均小于它的 ...

  6. java旋转太极图_如何用CSS纯代码画一个旋转的太极图(附代码)

    这是一个中国人都非常熟悉的图案--太极图,它分为阴阳两级,会旋转(用到css3 animation动画属性),此图通过css3纯代码实现,它由 若干个小圆组合而成,适合初学css3的人练练手,娱以 致 ...

  7. 如何快速阅读java源码_如何进行快速阅读代码

    每个程序员所写的代码都有自己的风格,而我们在参考别人的代码的时候,如何能更快速更好地读懂和自己编程风格的代码呢?下面小编为你整理如何快速阅读代码,希望能帮到你. 快速阅读代码方法 1.阅读源代码的说明 ...

  8. js混淆还原工具_[原创JS混淆downloader代码还原

    好久没发贴了,来水一贴吧. 1.样本代码function UP(m) { var nUX = "charA"; var luz = "t"; var c = n ...

  9. java const用法_尽可能使用const(示例代码)

    1.const用于定义常量 编译器可以对其进行静态数据类型检查 2.const可用于修饰形式参数 若你在编写函数时,并没有打算改变参数,这是就应该将参数的类型设置为const reference,这样 ...

最新文章

  1. Nature综述:真菌的多样性:真菌的高通量测序及鉴定
  2. Python 学习日记5
  3. 如何让tomcat只支持ipv4
  4. 计算机系统结构相关技术,计算机系统结构第1章技术总结.pptx
  5. Uboot USB模式(RK3288变砖头的解决办法)
  6. 怎样才能培养孩子良好的用餐习惯
  7. java判断float相等_在java中判断两个浮点型(float)数据是否相等的案例
  8. 【二级指针--定义、初始化赋值、解引用;特殊指针--空指针、void类型的指针】(学习笔记12--指针下)
  9. 12届毕业生回顾我的2012年,给2013届同学一点启迪
  10. Java SE Technologies at a Glance
  11. 取一行多列数据中的最大值
  12. win7修改开机动画
  13. 计算机音乐数字乐谱核爆神曲,核爆神曲——aLIEz钢琴谱钢琴简谱 数字谱 钢琴双手简谱.pdf...
  14. 如何制作标识标志标签
  15. 高数笔记(六):拉格朗日中值定理,柯西中值定理,洛必达法则,泰勒定理
  16. MySQL 关于时间设置注意事项
  17. linux防火墙设置命令,linux防火墙设置命令是什么
  18. 网站服务器不缴费会清档吗,云服务器不缴费释放
  19. python怎么定义一个整数_python整数实现
  20. 存储连接应用服务器简单入门

热门文章

  1. 微分方程在matlab中的实现,Matlab微分方程参数优化的Forcal实现
  2. linux qt 添加.so,Linux环境下qt/qt creator添加OpenCV的配置
  3. 【51单片机快速入门指南】6.3:DS18B20 单总线数字温度计的多路读取
  4. android开发工具下载
  5. 向DataGridView中添加新的一行数据,可以添加到最后一行或作为第一行
  6. Linux 命令出现号(大于号)如何退出
  7. linux input/output error
  8. 小程序设置header cookie
  9. [react] 简要描述下你知道的react工作原理是什么?
  10. [react] react中的setState是同步还是异步的呢?为什么state并不一定会同步更新?