在J2me中进行模糊处理时,Class.forName得到了ClassNotFoundException

Joh*_*aja 1 java obfuscation java-me

我能够运行以下示例代码

//main class

  String a="Menu";

  Object o = Class.forName("org.test."+a).newInstance();

//Menu class

public class Menu()
{
public Menu()

{

  System.out.println("con called");

}

}
Run Code Online (Sandbox Code Playgroud)

它运行正常,但当我混淆代码时,我得到一个没有ClassNotFoundException.

我使用的是netbean 6.9.1.在附加的obfusating设置中,我添加了-keepnames类org.test.Menu.但仍然没有工作.有解决方案吗

And*_*s_D 6

琐碎的原因:混淆器将名称更改为org.test.Menu其他名称(更改了包名称和/或更改了类名称).并且混淆器不能"重构"类,以便其他类文件中基于String的类名也被更改.

如果是这种情况,请告诉混淆器不要触摸org.test包(保留该名称,不要混淆其中的类的名称).

  • +1 - 最后一句给出OP的"修复".他将如何做到这一点取决于他正在使用的混淆器. (2认同)