gpt4 book ai didi

java混淆器: library doesnt work after optimization

转载 作者:行者123 更新时间:2023-12-02 00:54:04 24 4
gpt4 key购买 nike

我正在用 proguard 优化一个 jar,但优化后它崩溃了。这是我的 proguard 任务:

    <proguard>
-injars ${dist}/${jarname}
-outjars ${dist}-proguard/${jarname}

-target 5

-libraryjars '${java.home}/lib/rt.jar'

-dontobfuscate
-optimizationpasses 4
-overloadaggressively
-repackageclasses ''
-allowaccessmodification

-keep public class * {
public static void main(java.lang.String[]);
}
</proguard>

一旦我输入 -dontoptimize 选项,它就起作用了。

根据异常堆栈,当使用空指针访问类的静态公共(public)成员时,它会崩溃。这是代码:

public static Texture ring, dust, spikering, thinring, crystal, clouds;

public static void init() {
Field [] fields = TexturePool.class.getDeclaredFields();

for (Field field : fields) {
if(field.getType() == Texture.class) {
field.set( null, /*imagine new object here*/ );
}
}
}

谢谢!

最佳答案

好吧,我自己才发现。我认为优化完全优化了类成员,因为它们在此类中不是直接访问的。如果我指定选项:

        -keepclassmembers public class com.package.** {
public static * ;
}

即使经过优化也能正常工作。

关于java混淆器: library doesnt work after optimization,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1697025/

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