2017-08-03 83 views
1

我试图混淆与“com.github.sarxos”proguard的,Maven的插件外部的lib com.github.sarxos混淆

我导入外部LIB“网络摄像头捕捉”一个simlpe Java应用程序类

import com.github.sarxos.webcam.Webcam; 

而且somwhere在应用程序中调用一个方法

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.access$500(Unknown Source) 
    at java.awt.EventQueue$3.run(Unknown Source) 
    at java.awt.EventQueue$3.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method).... 

这里的proguard-maven-plugin来自我的pom.xml。我设置了一个跳过com.github.sarxos.webcam类混淆的选项,但没有成功。

<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?

回答