ProGuard - 意外地包含类

时间:2014-05-31 20:38:32

标签: class warnings obfuscation proguard

当我试图在ProGuard中混淆简单的DataLoader.class文件时,我收到此错误:

Reading program directory [C:\Users\uzytkownik\Documents\NetBeansProjects\ProTest\build\classes\Files\DataLoader.class]
Warning: class [DataLoader.class] unexpectedly contains class [Files.DataLoader]
Warning: there were 1 classes in incorrectly named files.
         You should make sure all file names correspond to their class names.
         The directory hierarchies must correspond to the package hierarchies.
         (http://proguard.sourceforge.net/manual/troubleshooting.html#unexpectedclass)
         If you don't mind the mentioned classes not being written out,
         you could try your luck using the '-ignorewarnings' option.
Please correct the above warnings first.

这是项目: http://www49.zippyshare.com/v/14668241/file.html

我将非常感谢你的帮助。

3 个答案:

答案 0 :(得分:4)

使用选项-injars-libraryjars,您应该指定类的正确基本目录(或jar),就像类路径一样。在这种情况下:classes,而不是classes\Files\DataLoader.class

请参阅ProGuard手册>疑难解答> Warning: class file ... unexpectedly contains class ...

答案 1 :(得分:4)

Warning: class [META-INF/versions/9/module-info.class] unexpectedly contains class [module-info] 

这是我遇到的问题,我尝试了以下几种选择:

  1. -保持类模块信息
  2. -keepattributes模块*
  3. -dontwarn模块信息

对我有用的选项是3。

不知道为什么,但是它可以解决我的问题,我可以制作广口瓶。

当您升级诸如我升级spring-boot版本之类的项目并且项目开始失败时,就会出现此问题。

请同时检查Maven依赖项。

答案 2 :(得分:0)

如果你在安卓上工作,请添加这个 build.gradle

 buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }