我花的最后4小时试图设置Eclipse TPTP存储器 仿形于必须远程运行(即不在一个Tomcat实例 日食)。这应该根据TPTP和代理可能 控制器文档。

我安装TPTP组分(4.6.0)到我的Eclipse(伽利略) 工作台,根据该代理控制器具有沿 该网站上的说明。要启用代理,我添加了 以下选项来启动该Tomcat实例命令行:

-agentlib:JPIBootLoader=JPIAgent:server=enabled;HeapProf:allocsites=true

和加入以下目录到PATH的前:

D:\dev\tools\ac\plugins\org.eclipse.tptp.javaprofiler
D:\dev\tools\ac\bin

当试图启动Tomcat我一直有以下错误 消息:

ERROR: JDWP unable to get necessary JVMTI capabilities. ["debugInit.c",L279]

我做了很多的谷歌搜索但一无所获相关;我试过了 重新安装TPTP和代理控制器的各种版本。

在结束时的问题被证明是,我是启动Tomcat 用 “JPDA” 选项,它catalina.bat中转换成

-Xdebug -Xrunjdwp:transport=.....

卸下“JPDA”命令的参数引起JVMTI开始工作。

所以,问题是:我什么也没发现任何在我的搜索, 指示JVMTI剂与调试不相容。能够 有人解释是怎么回事,为什么JVMTI + JDWP是不是有效 设置?

有帮助吗?

解决方案

的答案都不到目前为止是正确的,这是如果查询提到的错误在谷歌出现的第一个打击,所以我认为有必要澄清。

和JVMTI JDWP 一起工作,实际上它们通常必须一起使用。如果ERROR: JDWP unable to get necessary JVMTI capabilities(和/或可能-Xrunjdwp)被指定不止一次在命令行上,你会得到-agentlib:jdwp。为了解决这个问题,确保你只有-Xrunjdwp-agentlib:jdwp之一,在您的命令行。

有关详情,请阅读...

JVMTI(Java虚拟机工具接口)的后继JVMDI(Java虚拟机调试接口)和JVMPI(Java虚拟机分析接口)。它包含两个JVMDI和JVMPI,两者中不提倡使用Java 5中并除去在Java中6的功能是暴露该JVM的内部用于调试和分析的目的。

的API

JDWP(爪哇调试线协议)是描述用于发送命令和响应的简单机制的协议。据我所知,它是调试坐在外面JVM与它沟通,并与JVMTI接口的唯一途径。

JDI(Java调试接口)是一个客户端(调试器侧)API暴露一些JVMTI的同时利用JDWP的更多或更少的透明的特性。

在鲍勃多布斯的提到的错误答案涉及误导性的错误消息,而事实上,JVM将尽力为它是在命令行上指定每次加载一次JDWP。它并不在任何地方指出JDWP和JVMTI不能一起使用。

这里

更多信息: https://www.ibm.com /support/knowledgecenter/ssw_ibm_i_74/rzaha/jpdebuga.htm

其他提示

我遇到同样的问题,因为你,但我想出了一个JVM错误报告(的 http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6354345 )以为蒙上对这个问题的一些情况。它基本上可以归结为永远不被打算两次加载到同一虚拟机Java代理库。很烂,但似乎喜欢它的代理系统的基本限制,你不能在同一时间两者都做。

对于我来说这是同样的问题,因为代码金光闪闪后,他们重复-Xrunjdwp没有意识到有,因为它是隐藏在可变-Xrunjdwp,请检查您的应用程序服务器的启动脚本第二%JAVA_OPTIONS%

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top