我经常在运行程序时遇到随机错误。

7

我以前从未见过这种错误,例如:

本地方法中的致命错误:JDWP无法获取线程本地存储,jvmtiError=JVMTI_ERROR_WRONG_PHASE(112)

如果我之后再次运行程序,则该错误不会出现,这是我不理解的。今天这个错误已经出现了几次,甚至在这个最简单的代码示例中也出现了:

test.java

import java.io.File;

public class test {

    public test() {
        OpenFile opf = new OpenFile("test/data.txt");
        OpenFile opf2 = new OpenFile(new File("test/data.txt"));

        OpenFolder opfo = new OpenFolder("test");
        OpenFolder opfo2 = new OpenFolder(new File("test"));

    }

    public static void main(String[] args) {
        new test();
    }

}

OpenFile.java

import java.io.File;

public class OpenFile {
    File openFile;

    public OpenFile(String filePath) {
        openFile(new File(filePath));
    }

    public OpenFile(File file) {
        openFile(file);
    }

    public void openFile(File file) {
        if(file.exists())
            System.out.println("Exists");
        else
            System.out.println("!Exists");
    }

}

打开文件夹

import java.io.File;

public class OpenFolder {

    public OpenFolder(String string) {

    }

    public OpenFolder(File file) {

    }

}

据我所见,我的程序中没有任何可能导致错误的内容,而且我也无法复制该错误。我只知道这个错误是在运行时发生的。


你用什么版本的Java来运行那段代码? - assylias
你正在运行调试模式吗? - Kayaman
JDWP是Java调试器 - 也许尝试在运行时关闭调试(或者可能配置不正确)。 - cjstehno
Java版本是1.8,是的,我正在调试运行,但即使如此,我也不明白为什么会出现错误。 - FOD
1个回答

3

看起来像是JDWP代理程序的错误(可能是JDK-6988950)。不幸的是,这个问题只在JDK 9中得到了解决。尝试使用来自JDK 9 EA的jdwp.dll/libjdwp.so进行替换。


1
从https://bugs.openjdk.java.net/browse/JDK-6988950底部的评论中,“将错误优先级更改为P2,因为计划将其回退到已经处于RDP1阶段的8u40。” - mmesser314
@mmesser314 只是为了官方更新,这在Java 8构建42中已经修复。 - Parker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接