错误: JDWP无法获取JNI 1.2环境

77

在Eclipse中进行调试后,我得到了这个错误。不过,调试本身是成功的。

ERROR: JDWP Unable to get JNI 1.2 environment, jvm->GetEnv() return code = -2
JDWP exit error AGENT_ERROR_NO_JNI_ENV(183):  [../../../src/share/back/util.c:820]

这是什么意思?


当我试图调试同时使用网络和图像API的代码片段时,我在NetBeans 6.1中遇到了完全相同的问题。你是不是也尝试使用网络或图像API? - Everyone
我肯定没有使用图像API。你说的“使用网络”是什么意思?如果你指的是套接字,那我是在用套接字。 - Carlos Blanco
是的,我指的是网络API - 套接字/HTTP。 - Everyone
6个回答

81

只需在主方法的末尾添加System.exit(0);即可。

这就是您需要做的全部。


1
我尝试了这个,并且它奏效了。但是后来我将它移除了,它仍然有效。根据上面接受的解决方案,似乎这可能是一个时间问题,使得这很难始终忠实地复现。 - Xonatron
这对我有效。我也在运行Java版本“1.6.0_29” Java(TM) SE Runtime Environment (build 1.6.0_29-b11)。 - angryITguy
我得到了和@Xonatron相同的结果。奇怪! - Federer
1
听起来像通过在这里和那里添加 sleep 来解决线程问题。 - Newtopian
@Xonatron 如果错误不是从主类中抛出的呢? - Mohammadreza Khatami

39

在那个URL上,我收到了一条消息:“此错误不可用。” 错误编号正确吗?还是该错误已被删除? - MarnixKlooster ReinstateMonica
@EaterOfCorpses 现在它又回来了 :D - Boann
1
很高兴看到截至2015年11月,这个问题仍未得到解决。 - Stacky
1
你好!这里是来自2018年的人。我刚刚遇到了一个bug :p - Swastik Raj Ghosh
你好,来自2019年的我。不用多说,我是因为遇到了同样的错误才来到这里的。 - RAHUL ROY
显示剩余4条评论

5

这显然是JVM的一个bug。它是无害的,但不可预测。


3
嗯,不是那么无害,它导致我的程序自动崩溃了。 - Steve Bennett
7
一般来说,它意味着“其他原因导致您的程序失败”,然后在退出时执行此操作,但我想可能会出现一些新情况。 - bmargulies
它应该发生在JVM关闭期间。所以你的程序已经完成了。 - Florian F

3
发生在类似这个教程这么简单的东西上。
//trim spaces
String s2 = "Welcome!";
int len1 = s2.length();
System.out.println(len1);
String s3 = s2.trim();
System.out.println(s3.length());

如果多次快速运行程序,会发生什么情况?这与系统性能有关吗?
ERROR: JDWP Unable to get JNI 1.2 environment, jvm->GetEnv() return code = -2
JDWP exit error AGENT_ERROR_NO_JNI_ENV(183):  [../../../src/share/back/util.c:838]

0

我注意到这种情况发生在我使用存储在USB驱动器上的工作区和有时在我的工作网络上。这不是一个重大的问题,似乎没有对任何程序的执行产生影响。我测试了@Vasile Surdu的解决方案,在主方法末尾添加System.exit(0);,它有效。另一种解决方案是重新启动eclipse,这在大多数情况下对我有效。


0
@大家,我在使用图像API读写网络文件时遇到了这个问题,但是当我运行程序处理本地文件时并没有发生这种情况。在确认了我的结果后,我确定它确实没有造成任何损害(至少在我进行调试的过程中是如此)。现在我读到这篇帖子后就停止关注这个问题了。

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