使用 proguard 尝试了进行混淆,费了好大力气终于弄好了,反编译也看不出原始代码。但是实际运行的时候就报错了。启动的时候找不到方法,估计是混淆导致的。关于 Javafx 还有什么好的混淆方案呢?

使用 proguard 尝试了进行混淆,费了好大力气终于弄好了,反编译也看不出原始代码。但是实际运行的时候就报错了。启动的时候找不到方法,估计是混淆导致的。关于 Javafx 还有什么好的混淆方案呢?
1 Chinsung Nov 11, 2024 java 写的到字节码层面执行,还是挺难把混淆做的很彻底的吧 感觉不如核心逻辑直接用 JNI 去写 |
2 cJ8SxGOWRH0LSelC Nov 11, 2024 放弃吧, 不要浪费精力了, 就算你混淆的再完美, 也只不过看起来麻烦一点, 真想研究你的逻辑, 而是轻轻松松。 |
3 zhangshaohan OP |
4 ntdll Nov 11, 2024 >> 实际运行的时候就报错 这通常是由于程序中使用反射导致的,proguard 并不知道哪些类、方法、属性被通过反射引用,因此需要你手动 keep 一部分。 通常来说一些库的作者会告诉你哪些需要被 keep ,当然笨办法可以每次运行的时候,基本提示的应该是 class not found 一类的,把对应的 class ,或者索性它所在的整个 package 都 keep 住,反复多运行几次,就行了。 |
5 zhangshaohan OP @gam2046 对,应该是这个原因,感谢。 |
6 dimwoodxi27 Nov 12, 2024 没办法直译,永远都是开源;运行还得带个 jre ,混淆反而影响性能和各种报错,fx 写跨平台 gui 真感觉性能体积连 go 的 gui 都不如 |
7 Nitsuya Nov 12, 2024 GluonFx Native, 不过挺麻烦的. |
8 CodeCodeStudy Sep 25, 2025 就是因为反射等动态特性导致的,就像 GraalVM 的 native-image 一样,碰到反射的代码就容易出问题 |