Runtime.getRuntime().traceInstructions(false);
Runtime.getRuntime().traceMethodCalls(false);
但我仍然可以看到正在生成的跟踪。你如何做到这一点?同时,我需要检测是否有人在调试我的类。
我想禁用所有异常跟踪。我不能使用混淆,因为我的产品是一个SDK,将被用于开发。我还提供了一个Runtime,用于部署使用我的SDK构建的应用程序。我的要求是,任何使用我的Runtime JAR文件的人都不应该能够调试编写的代码...或者至少通过避免从我的Runtime JAR文件中生成堆栈跟踪来使调试变得困难。
我发现的一种方法是,只需捕获从我的Runtime JAR文件起源的所有异常,并在异常对象上设置一个空的StackTraceElement数组,然后重新抛出它...
为什么会有这样的要求? 假设您使用我的SDK开发应用程序。(SDK JAR文件不能捆绑在您的应用程序中..我已经限制了它,这是最终的 :) !!)现在,为了在客户端机器上运行应用程序,您(或客户端)需要安装Runtime并运行应用程序。现在,如果您的客户开始使用我的Runtime JAR文件开发自己的应用程序!!那就对我的业务构成威胁....这就是可怕的要求的原因。
为什么要禁用堆栈跟踪?
通过禁用堆栈跟踪或方法调用跟踪的生成,我希望使使用我的Runtime JAR文件开发代码变得困难,这就是我以这种方式开始我的问题的原因...请建议其他解决方案来实现这样的要求...