報錯,但不影響運行ERROR: JDWP Unable to get JNI 1.2 environment, jvm->GetEnv() return code = -2

參考:http://blog.csdn.net/zxl0016/article/details/7327125html

eclipse 3.4+jdk1.6java

編譯正常經過,運行debug模式時報錯api

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]網絡

查找該錯誤緣由。發現是重定向輸出的問題。eclipse

如下是網絡資料原文jvm

裝jdk1.6了把,呵呵~ 我也碰到過這問題。 
這是我之前在網上找到的,但願對你有幫助。 
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] 

這是怎麼回事呢?如今的Java SE 6已經到了RC的階段了啊?這樣的錯誤SUN不會有吧~~ 

通過我仔細的查閱Java Doc,發現其中有這麼一段話: 

http://download.java.net/jdk6/docs/api/java/io/Console.html 

"Whether a virtual machine has a console is dependent upon the underlying platform and also upon the manner in which the virtual machine is invoked. If the virtual machine is started from an interactive command line without redirecting the standard input and output streams then its console will exist and will typically be connected to the keyboard and display from which the virtual machine was launched. If the virtual machine is started automatically, for example by a background job scheduler, then it will typically not have a console." ">http://download.java.net/jdk6/docs/api/java/io/Con..." 

翻譯一下: 

虛擬機是否有一個控制檯Console取決於所依賴的平臺和虛擬機解析該方法的方式。若是虛擬機是從一個交互式的命令行中啓動的,而沒有重定向標準輸入和輸出流,那麼虛擬機會自動的鏈接到鍵盤做爲標準輸入,而且把啓動虛擬機的地方做爲標準輸出。若是虛擬機是自動啓動的,例如經過後臺的一個任務計劃,那麼典型的狀況就是沒有Console控制檯......。 

因而,思考一下咱們運行上面程序的地點——Eclipse等集成開發環境,這對於上面描述中的把啓動虛擬機的地方做爲標準輸出來講是不合適的,這裏的Console()返回的默認狀況下是Null,因而就產生了上面的出錯信息。(也許將來Eclipse會有所改進吧) 

怎麼解決該問題呢?這裏提供兩條思路給你們(已經實際操做過,能夠實現功能的正常運做) 

一、使用命令行進行運行,編譯可使用集成開發環境。這樣能夠完成標準輸出。 
二、在程序中重定向標準輸出到其餘的設備或者方式(例如寫到文本文件),這樣也能夠"比較不方便的"完成該功能。
函數

三、在main函數結束時,添加system.exit(0);.net

相關文章
相關標籤/搜索