ERROR: JDWP Unable to get JNI 1.2 environment


ERROR: JDWP Unable to get JNI 1.2 environment - 直來直往的專欄 - 博客頻道 - CSDN.NET


ERROR: JDWP Unable to get JNI 1.2 environment


1210人閱讀
評論(0)
收藏
舉報

 

eclipse 3.4+jdk1.6

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

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]

查找該錯誤原因。發現是重定向輸出的問題。

以下是網絡資料原文

裝jdk1.6了把,呵呵~ 我也碰到過這問題。 
這是我以前在網上找到的,希望對你有幫助。 
ERROR
JDWP Unable to get JNI 1.2 environmentjvm->GetEnv() return code = -
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會有所改進吧) 

怎么解決該問題呢?這里提供兩條思路給大家(已經實際操作過,可以實現功能的正常運作) 

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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM