1

如果之前没有将其分配给中间变量,是否有办法使用 eclipse 调试器更改/定义方法返回的值?

例如,我有一些调用 java.lang.Class.classForName 的第三方封闭源代码,它看起来像这样

  public static Class<?> forName(String className)
              throws ClassNotFoundException {
      return forName0(className, true, ClassLoader.getCallerClassLoader());
  }

ClassLoader.getCallerClassLoader()获取的classloader加载类失败,想试试Thread.currentThread().contextClassLoader是否更幸运。所以实际上,我想要类似的东西:

   public static Class<?> forName(String className)
               throws ClassNotFoundException {
       return forName0(className, true, Thread.currentThread().contextClassLoader);
   }

这有可能吗?请注意,forName0 是本机方法。

4

2 回答 2

0

您可以使用AspectJ的运行时编织来应用您自己的自定义方面ClassLoader.getCallerClassLoader()来替换返回值。

您也可以尝试Bugdel

于 2012-10-11T16:41:18.097 回答
-1

如果您不使用返回值,Class.forName() 有什么用途?

进入静态方法,看看你是否可以在那里调整它。它可能正在加载静态的东西

在 Eclipse 中调试时修改/查看静态变量

于 2012-10-11T15:42:44.720 回答