jjzjj

StackWalker

全部标签

java - 如何在 jdk9/java-9 中使用 sun.reflect 包?

我正在使用jdk-9,我想在我的代码中使用sun.reflect.*包,但出现以下异常Exceptioninthread'main'java.lang.IllegalAccessError:classTest(inmoudle:UnnamedModule)cannotaccessclasssun.reflect.Reflaction(inmodule:java.base),sun.reflectisnotexportedtoUnnamedmodule当我使用JDK-9运行以下示例代码时publicstaticvoidmain(Stringargs[]){System.out.print

java - 如何检查 SecurityManager 中的调用者类来源?

我有一个用于受信任应用程序代码的ClassLoader和一个用于用户提交(不受信任)代码的单独ClassLoader。我希望安全管理器限制用户提交的代码。如何从SecurityManager中检查调用方来源?查看伪代码:System.setSecurityManager(newSecurityManager(){publicvoidcheckPermission(Permissionpermission){if(/*callerclassisnotloadedbythetrustedclassloader*/){thrownewSecurityException("Youdonotha

java - 在 IDE 调试器中隐藏堆栈帧(例如 Java9 StackWalker)

Java9的新StackWalker特性让我意识到,如果Eclipse(最好是IntelliJ)可以配置为使用自定义StackWalker,它可以修改IDE调试器中的正常调用堆栈View,那将会很棒.我想做的是隐藏例如调试JavaEE程序时的特定技术堆栈条目,但也存在于许多第三方支持库中。一般来说,我希望选择忽略通常不感兴趣的特定(可定制)堆栈帧,例如基于(通配符)包或类名。理想情况下,“介入”也会自动跳过此类帧并步进,直到回到“未抑制”堆栈帧内。有谁知道Eclipse或IntelliJ中是否已经提供了这样的功能。如果它不专门使用StackWalker而是概念上类似的东西,那也没关系。

java - Thread.getStackTrace() 有多贵?

在一个日志系统中,每条日志的输出都是由一个辅助类用这样的方法完成的publicvoiddebug(Stringmessage){Loggerlogger=Logger.getLogger(getCallingClass());logger.debug(message);}...publicClassgetCallingClass(){/*CallsThread.getStackTrace()andbacktracesuntiltheclassonthestacktrace!=this.getClass().*/returnclassFound;}运行它的成本有多高?它是否会对性能产生重