`
三里小龙
  • 浏览: 87624 次
  • 性别: Icon_minigender_1
  • 来自: 孝感
社区版块
存档分类
最新评论

JDWP Unable to get JNI 1.2 environmen

阅读更多

Exception in thread "main" 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]

 

网上解决办法:

 

 

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);

分享到:
评论

相关推荐

    JDWP 远程命令执行 检查工具

    JDWP 远程命令执行检查工具,JDWP(Java DEbugger Wire Protocol):即Java调试线协议,是一个为Java调试而设计的通讯交互协议,它定义了调试器和被调试程序之间传递的信息的格式。说白了就是JVM或者类JVM的虚拟机都...

    JNI编程指南

    12. JNI相关的工具和调试:JNI编程可能涉及到复杂的调试工作,因此了解和掌握一些辅助工具,如jdwp、jdb等,对于调试JNI代码是很有帮助的。 本文档中还提到了“本地方法native是静态时”的注意事项。当本地方法被...

    jni.zip_C++ JNI_JNI 调用java_c调用java_jni_jni jdk1

    JNI,全称Java Native Interface,是Java平台标准的一部分,它为Java代码和其他语言写的代码提供了一个接口。在Java应用程序中,JNI允许Java代码与用C、C++等本地语言编写的代码进行交互,实现了Java虚拟机(JVM)与...

    深入Java调试体系(JPDA-JDWP)

    JPDA 主要由三个部分组成:Java 虚拟机工具接口(JVMTI),Java 调试线协议(JDWP),以及 Java 调试接口(JDI),本系列将会详细介绍这三个模块的内部细节、通过实例为读者揭开 JPDA 的面纱。

    浅析JDWP远程命令执行漏洞 [ Mi1k7ea ]1

    2022/3/2 下午8:30浅析JDWP远程命令执漏洞 [ Mi1k7ea ]https://www.mi1k7ea.com/2021/08/06/浅析JDW

    基于JDWP的Android应用程序恶意行为检测研究.pdf

    JDWP是一种在Java虚拟机(JVM)和调试器之间传输调试信息的协议,因此它能在运行时监控到应用程序的敏感API调用行为。通过这种方式,可以实时监控Android应用程序的运行状态,并且基于JDWP协议监控到的敏感行为API...

    JNI 教程 java与c/c++互相调用

    - **JNI调试**:可以使用`jdwp`(Java Debug Wire Protocol)来远程调试JNI代码,也可以在C/C++代码中插入`printf`语句进行输出调试。 5. **Android中的JNI** - **Android.mk文件**:在Android项目中,使用`...

    jdwp:Java调试线协议

    jdwp Java调试线协议安装$ npm i jdwp --save用法启动Java项目并连接到jvm const { launcher } = require ( 'jdwp' )const vm = await launcher . launch ( { mainClass : 'Test' , vmArgs : [ '-Dfile.encoding=UTF...

    基于 jdwp-shellifier 的进阶JDWP漏洞利用脚本(动态执行Java_Js代码并获得回显).zip

    python chatgpt

    android 调试工程测试

    当我们运行带有调试配置的应用时,可以使用`adb jdwp`命令找到进程ID,然后在Android Studio中附加调试器。对于JNI代码,可以在Java层设置断点,当执行到JNI函数时,会自动跳转到对应的C/C++代码进行调试。此外,...

    java调用c INI接口实例 调用c dll.rar

    调试时,可以使用Java的`jdwp`(Java Debug Wire Protocol)配合C的调试工具,如GDB。 总结,Java调用C INI接口实例以及调用C DLL,主要涉及JNI技术,通过创建头文件、编写C代码、编译DLL、加载并调用DLL,实现Java...

    借助adb协议+jdwp协议在Android端实现基于debugger的代码注入工具.zip

    项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松copy复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全栈开发),有任何使用问题欢迎随时与我联系,我会及时为您解惑,...

    idea远程调试代码(图文详细)

    2. 当控制台(Console)窗口中显示“Connected to the target VM, address: '127.0.0.1:4001', transport: 'socket'”,表示已成功连接到远程服务器。 3. 此时,可以像调试本地代码一样设置断点、查看变量值等。 ##...

    jdwpTransport_java_

    Java Debug Wire Protocol (JDWP) 是Java虚拟机(JVM)的一个重要组成部分,它允许调试器与被调试的Java应用程序之间进行通信。"jdwpTransport"是JDWP中的一个关键概念,代表了传输层,负责在调试器和目标JVM之间...

    Java的jdk以及所需文件【cmd.exe】

    直接可以在本文件夹下使用cmd运行Java和编译Java文件并执行Java程序或是调试Java程序,并且不会影响到其他目录或是干扰到其他程序文件或是重要的加密文件,切可以更快的打包并发送出去或是分享给其他人,特性:方便...

    AndBug-A Scriptable Android Debugger

    It uses the same interfaces as Android's Eclipse debugging plugin, the Java Debug Wire Protocol (JDWP) and Dalvik Debug Monitor (DDM) to permit users to hook Dalvik methods, examine process state, ...

    Adb命令列表[汇编].pdf

    - `install <path-to-apk>`: 安装指定路径的APK文件到设备或模拟器上。 - `pull <remote> <local>`: 从设备或模拟器上拉取文件到本地计算机。 - `push <local> <remote>`: 将本地计算机的文件推送到设备或模拟器...

Global site tag (gtag.js) - Google Analytics