proguard-maven-plugin 外部库 com.github.sarxos 混淆
proguard-maven-plugin an external lib com.github.sarxos obfuscation
我正在尝试使用来自 "com.github.sarxos"
的外部库 "webcam-capture" 混淆一个 simlpe java 应用程序
我导入一个class
import com.github.sarxos.webcam.Webcam;
然后在应用程序的某个地方调用一个方法
Webcam webcam = Webcam.getDefault();
没有混淆一切都很好,但是在混淆 jar 之后我遇到了运行时错误:
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: com/github/sarxos/webcam/Webcamat
mdr.apmik.a.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access0(Unknown Source)
at java.awt.EventQueue.run(Unknown Source)
at java.awt.EventQueue.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)....
这里是我的 pom.xml 的 proguard-maven-plugin。我已经设置了一个选项来跳过 com.github.sarxos.webcam class 混淆,但没有成功。
<plugin>
<groupId>com.github.wvengen</groupId>
<artifactId>proguard-maven-plugin</artifactId>
<version>2.0.8</version>
<executions>
<execution>
<phase>package</phase>
<goals><goal>proguard</goal></goals>
<configuration>
<injar>${project.build.finalName}-jar-with-dependencies.jar</injar>
<proguardVersion>5.2</proguardVersion>
<options>
<option>-allowaccessmodification</option>
<option>-dontoptimize</option>
<option>-dontshrink</option>
<option>-dontnote</option>
<!-- <option>-dontwarn</option> added option to ignore com.sun missing classes -->
<option>-keepattributes Signature</option>
<option>-adaptclassstrings</option>
<option>-keep public class mdr.apmik.App { public *; public static *; }</option>
<!-- Exclude external lib -->
<option>-keep class com.github.sarxos.webcam.** { *; } </option>
</options>
<libs>
<lib>${java.home}/lib/rt.jar</lib>
</libs>
<dependencies>
<dependency>
<groupId>net.sf.proguard</groupId>
<artifactId>proguard-base</artifactId>
<version>5.2</version>
<scope>runtime</scope>
</dependency>
</dependencies>
</configuration>
</execution>
</executions>
我的问题是 - 是否可以将 Proguard 与这样的库一起使用?
如果是,如何为此配置 Proguard?
终于,我找到了决定。在组装阶段之前只是 运行 混淆。
我在编译器插件和汇编插件之间插入了 Proguard 插件。
来自 Sharcoux
的想法
我正在尝试使用来自 "com.github.sarxos"
的外部库 "webcam-capture" 混淆一个 simlpe java 应用程序我导入一个class
import com.github.sarxos.webcam.Webcam;
然后在应用程序的某个地方调用一个方法
Webcam webcam = Webcam.getDefault();
没有混淆一切都很好,但是在混淆 jar 之后我遇到了运行时错误:
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: com/github/sarxos/webcam/Webcamat
mdr.apmik.a.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access0(Unknown Source)
at java.awt.EventQueue.run(Unknown Source)
at java.awt.EventQueue.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)....
这里是我的 pom.xml 的 proguard-maven-plugin。我已经设置了一个选项来跳过 com.github.sarxos.webcam class 混淆,但没有成功。
<plugin>
<groupId>com.github.wvengen</groupId>
<artifactId>proguard-maven-plugin</artifactId>
<version>2.0.8</version>
<executions>
<execution>
<phase>package</phase>
<goals><goal>proguard</goal></goals>
<configuration>
<injar>${project.build.finalName}-jar-with-dependencies.jar</injar>
<proguardVersion>5.2</proguardVersion>
<options>
<option>-allowaccessmodification</option>
<option>-dontoptimize</option>
<option>-dontshrink</option>
<option>-dontnote</option>
<!-- <option>-dontwarn</option> added option to ignore com.sun missing classes -->
<option>-keepattributes Signature</option>
<option>-adaptclassstrings</option>
<option>-keep public class mdr.apmik.App { public *; public static *; }</option>
<!-- Exclude external lib -->
<option>-keep class com.github.sarxos.webcam.** { *; } </option>
</options>
<libs>
<lib>${java.home}/lib/rt.jar</lib>
</libs>
<dependencies>
<dependency>
<groupId>net.sf.proguard</groupId>
<artifactId>proguard-base</artifactId>
<version>5.2</version>
<scope>runtime</scope>
</dependency>
</dependencies>
</configuration>
</execution>
</executions>
我的问题是 - 是否可以将 Proguard 与这样的库一起使用? 如果是,如何为此配置 Proguard?
终于,我找到了决定。在组装阶段之前只是 运行 混淆。 我在编译器插件和汇编插件之间插入了 Proguard 插件。 来自 Sharcoux
的想法