Java 程序在调用特定类的任何方法时卡住

标签 java class methods static static-methods

我正在开发一个应用程序,该应用程序决定以一种非常无法解释的方式停止工作。经过一些调试和错误跟踪,我发现问题出在代码中对特定方法的调用中。

public static void main(String[] args) throws FileNotFoundException {
    System.out.println("Print ");
    InternalPanel.init();
}

IN INTERNAL PANEL

public static void init() {
    System.out.println("Line");
}

为了澄清,从其他类调用任何其他方法都是有效的。从此特定类调用任何方法都不起作用。

此外,这个类(以及其中的方法)一直有效。

当它停止工作时,我对程序中完全不相关的内容进行了微小的更改(例如,在单独的线程中,对相关类没有影响)

最佳答案

尝试查看InternalPanel 类的其余部分。静态初始化中的某些内容很可能会影响其他内容。例如:

public class InternalPanel
{
    private static SomeOtherThing thing = new SomeOtherThing();
    ...
}

在上面的代码中,如果实例化 SomeOtherThing 最终导致一系列事件,最终产生无限循环或堆栈溢出,那么就会产生您所看到的效果。它实际上不是对 init 函数的调用,而是 InternalPanel 类的静态初始化。

(您可以通过让测试程序调用 InternalPanel 类上的其他虚拟方法来轻松检查这是否是静态初始化问题。)

在 Debug模式下,您可能只想在程序似乎被卡住时尝试随机暂停执行,并查看正在运行的代码以及堆栈跟踪的样子。

关于Java 程序在调用特定类的任何方法时卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11895174/

相关文章:

class - TypeScript - 将类存储为 map 值?

python - 属性错误:类型对象 'Ned' 没有属性 'attack' ?

java - 使用带有两个 int 参数而不是 int 的 void 方法?

java - 运行程序而不结束它

java - 如何将点击哪一行的变量传递给我的 Intent ?

java - 在 Linux Fedora Hyper-V 虚拟机上独立启动 HBase 时出错

java - 如何使用 Hibernate 检查该值并从数据库中检索它(如果存在)?

java - 在谷歌地图 Android 上显示当前位置

c++ - 实现利用多个其他非继承类的 C++ 类方法?

ruby - 用别名包装继承的方法