Eclipse 在调试时使用 java 8 在 ClassLoader 上中断

Posted

技术标签:

【中文标题】Eclipse 在调试时使用 java 8 在 ClassLoader 上中断【英文标题】:Eclipse breaking on ClassLoader with java 8 when debugging 【发布时间】:2015-03-22 23:56:30 【问题描述】:

我在一些项目中迁移到了 java 8,并注意到每个设置为使用 java 8 运行的项目在调试它们时都会无缘无故地中断..

当我在调试模式下运行项目时,Eclipse 只是在第 436 行的 ClassLoader 类中中断,这是 synchronized 的右花括号

这是 jre 库中类的部分代码

protected Class<?> loadClass(String name, boolean resolve)
    throws ClassNotFoundException

    synchronized (getClassLoadingLock(name)) 
        // First, check if the class has already been loaded
        Class<?> c = findLoadedClass(name);
        if (c == null) 
            long t0 = System.nanoTime();
            try 
                if (parent != null) 
                    c = parent.loadClass(name, false);
                 else 
                    c = findBootstrapClassOrNull(name);
                
             catch (ClassNotFoundException e) 
                // ClassNotFoundException thrown if class not found
                // from the non-null parent class loader
            

            if (c == null) 
                // If still not found, then invoke findClass in order
                // to find the class.
                long t1 = System.nanoTime();
                c = findClass(name);

                // this is the defining class loader; record the stats
                sun.misc.PerfCounter.getParentDelegationTime().addTime(t1 - t0);
                sun.misc.PerfCounter.getFindClassTime().addElapsedTimeFrom(t1);
                sun.misc.PerfCounter.getFindClasses().increment();
            
        
        if (resolve) 
            resolveClass(c);
        
        return c;
     // <-- This is line 436 where it breaks just right after I click on the debug mode
 

然后我必须点击播放,一切都很好,但每次我想调试一个让我发疯的应用程序时都这样做是多么令人兴奋。试图找到与此相关的任何东西,但没有运气。

我还检查了断点视图,并且有。还检查了Skip all breakpoints 按钮,但似乎没有任何反应。

还可以下载一个新的干净的 Eclipse 并且仍在进行中。

这是截图:

【问题讨论】:

你的描述让我想起了 Eclipse 烦人地停在(不是真的)未捕获的异常处,如***.com/questions/6290470/…中所述 @halfbit 谢谢,我解决了这个问题。您可以发布答案,以便我接受。 【参考方案1】:

我通过禁用 Step Filtering 修复了它

【讨论】:

以上是关于Eclipse 在调试时使用 java 8 在 ClassLoader 上中断的主要内容,如果未能解决你的问题,请参考以下文章

在 Eclipse 中使用 ANT 脚本时如何调试 Java 代码

调试java程序时如何在eclipse中执行某些功能?

Eclipse Java,debug模式无法调试,调试按钮不可用时解决办法

在 Eclipse 中调试 Java 时移动指令指针

在Eclipse中调试C程序找不到命令行参数文件

在eclipse中调试单个java测试方法[关闭]