gpt4 book ai didi

java - 使用嵌入式 jar 混淆 jar

转载 作者:搜寻专家 更新时间:2023-10-30 21:33:24 25 4
gpt4 key购买 nike

我想为 Java 邮件使用嵌入式 jar 混淆 jar:

<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.5.4</version>
<type>jar</type>
</dependency>
......
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>3.0.0</version>
<extensions>true</extensions>
<configuration>
<instructions>
<!-- Embed dependency into the bundle-->
<Embed-Dependency>javax.mail;inline=true</Embed-Dependency>
<Bundle-Version>${project.version}</Bundle-Version>
<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
</instructions>
</configuration>
</plugin>

混淆配置

<plugin>
<groupId>com.github.wvengen</groupId>
<artifactId>proguard-maven-plugin</artifactId>
<version>2.0.11</version>
<dependencies>
<dependency>
<groupId>net.sf.proguard</groupId>
<artifactId>proguard-base</artifactId>
<version>5.2.1</version>
</dependency>
</dependencies>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>proguard</goal>
</goals>
</execution>
</executions>
<configuration>
<proguardVersion>5.2.1</proguardVersion>
<obfuscate>true</obfuscate>
<injarNotExistsSkip>true</injarNotExistsSkip>
<injar>${project.build.finalName}.jar</injar>
<outjar>${project.build.finalName}.jar</outjar>
<options>
<option>-keep public class org.package.engine.osgi.impl</option>
<option>-keep public interface org.package.engine.osgi</option>
</options>
<exclusions>
<exclusion>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
</exclusion>
</exclusions>
<libs>
<lib>${java.home}/lib/rt.jar</lib>
<lib>${java.home}/lib/jce.jar</lib>
<lib>${java.home}/lib/ext/jfxrt.jar</lib>
</libs>
</configuration>
</plugin>

我在编译时遇到这个错误

proguard jar: C:\Users\user\.m2\repository\net\sf\proguard\proguard-base\5.2.1\proguard-base-5.2.1.jar
[proguard] ProGuard, version 5.2.1
[proguard] Reading library jar [C:\Users\user\.m2\repository\org\osgi\org.osgi.core\6.0.0\org.osgi.core-6.0.0.jar]
[proguard] Reading library jar [C:\Users\user\.m2\repository\org\apache\karaf\shell\org.apache.karaf.shell.core\4.0.1\org.apache.karaf.shell.core-4.0.1.jar]
[proguard] Reading library jar [C:\Users\user\.m2\repository\jline\jline\2.12\jline-2.12.jar]
.............
[proguard] Maybe this is library method 'java.util.Comparators$NullComparator { java.util.Comparator reversed(); }'
[proguard] Warning: there were 1 instances of library classes depending on program classes.
[proguard] You must avoid such dependencies, since the program classes will
[proguard] be processed, while the library classes will remain unchanged.
[proguard] (http://proguard.sourceforge.net/manual/troubleshooting.html#dependency)
[proguard] Error: Please correct the above warnings first.
[proguard] Note: there were 5 accesses to class members by means of introspection.
[proguard] You should consider explicitly keeping the mentioned class members
[proguard] (using '-keep' or '-keepclassmembers').
[proguard] (http://proguard.sourceforge.net/manual/troubleshooting.html#dynamicalclassmember)

完整错误堆栈 http://pastebin.com/hmhv0Yvs

最佳答案

没有尝试运行您的 POM,但正如我所见,它将 javax.mail Artifact 提取到您的 JAR,然后混淆所有 JAR,包括 javax.mail 你会遇到上面的问题。

为什么不提取依赖项,而是将其复制到 META-INF/lib? AFAIR 删除 ;inline=true 应该这样做。

关于java - 使用嵌入式 jar 混淆 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33584688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com