当前位置: 首页 > 知识库问答 >
问题:

如何将java.desktop模块作为libraryjar包含在Proguard中

魏煜祺
2023-03-14
 com.guardsquare:proguard-gradle:7.1.0-beta4

我使用以下代码以java版本无关的方式包含JDK库。以下是proguard示例。

        if (System.getProperty('java.version').startsWith('1.')) {
            libraryjars "${System.getProperty('java.home')}/lib/rt.jar"
        } else {
            libraryjars "${System.getProperty('java.home')}/jmods/java.base.jmod", jarfilter: '!**.jar', filter: '!module-info.class'
 }

但我得到以下警告:

Warning: a.custom.CustomClass: can't find referenced class javax.swing.tree.TreeNode
Execution failed for task ':obfuscation_task'.
> java.io.IOException: Please correct the above warnings first.

proguard需要什么来“查看”javax.swing.tree.TreeNodeclass作为LibraryClass?

共有1个答案

冯元徽
2023-03-14

当我试图给这个问题添加细节时,我找到了解决方法

错误的原因是,在新的java版本中,您必须显式指定添加了哪些模块。问题中的代码只是添加了java.base模块。要添加java.desktop模块,应添加以下行:

    libraryjars "${System.getProperty('java.home')}/jmods/java.desktop.jmod", jarfilter: '!**.jar', filter: '!module-info.class'

java库包含的完整部分现在是:

    if (System.getProperty('java.version').startsWith('1.')) {
     
        libraryjars "${System.getProperty('java.home')}/lib/rt.jar"
    } else {
     
        libraryjars "${System.getProperty('java.home')}/jmods/java.base.jmod", jarfilter: '!**.jar', filter: '!module-info.class'
        libraryjars "${System.getProperty('java.home')}/jmods/java.desktop.jmod", jarfilter: '!**.jar', filter: '!module-info.class'
     
    }
 类似资料: