gpt4 book ai didi

java - 如何为 JDI 启动连接器指定类路径;使用 Eclipse?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:45:39 25 4
gpt4 key购买 nike

我做的事情与 this question 的原始海报基本相同.就我而言,我尝试在 OS X 10.8.5 上的 Eclipse Kepler 中使用 Oracle jdk1.7.0_72 运行 Sun/Oracle JPDA 示例程序。但是,这些示例的文档似乎假定它们将从命令行运行。

我想使用 com.sun.jdi.connect.LaunchingConnector 来启动被调试程序。它需要类 Map 的参数。其中一个映射条目具有键“main”,其关联对象包含一个字符串,它是调试对象主类名称。在我的例子中,这是“debuggee.DebuggerTest”。调用启动的程序有主类“debugger.TraceLaunch”。

我的 Eclipse 项目具有默认结构,因此有一个名为“classes”的文件夹,每个包都有一个子文件夹。在我的例子中,它们是“com”、“调试器”和“调试器”。 “com”包包含“Example JDI Applications”中的所有类。

我正在使用上面引用的帖子中引用的“VMLauncher”来进行启动。启动失败;它报告找不到我的主类“debuggee.DebuggerTest”。如果我尝试将完整路径作为我的主类名称的一部分,它也会失败。

如果我打开一个终端并导出一个 CLASSPATH 变量,该变量指定我的 Eclipse 项目(和 JDI 库)中的“类”文件夹,我可以使用命令“java debuggee.DebuggerTest”启动调试对象,它会正确运行。我还可以使用命令“java debugger.TraceLaunch”启动调试器,它又成功启动了被调试程序。这表明 VMLauncher 正在做所有正确的事情。

看来问题出在示例包或 Oracle 的“tools.jar”中的 JDI 包的某个深处,LaunchingConnector 调用命令行启动器。它似乎属于 SunCommandLineLauncher 类。该启动器似乎假定了一个类路径。启动器参数似乎没有记录,所以我不知道是否有指定类路径的选项。 Oracle jdk1.7.0 JDI 类(在“lib/tools.jar”中)的源代码显然尚未发布,因此我无法查看代码以了解启动程序如何使用其参数的详细信息。

另一条可能有用的线索:在示例 JDI 应用程序中,GUI 调试器示例允许指定它尝试解析的类路径。遗憾的是,它无法像 UNIX shell 那样识别引号或字符转义,并且无法理解包含空格字符的文件夹名称。

理想情况下,我想知道如何指定 LaunchingConnector 的类路径。

我的第二个选择是关于在调整命令行程序以在 Eclipse 中运行时如何指定类路径的一些更一般的建议。

最佳答案

Trace 创建的新 VM 具有不同的类路径。如果你想在 eclipse 中运行该程序,你需要在你的跟踪程序中添加以下代码。

Connector.Argument options =(Connector.Argument)arguments.get("options");
options.setValue("-cp \"F:\\Workspace\\TraceProgram\\bin\"");

其中 -cp 将类路径设置为新创建的 VM,您需要更改为您的 eclipse 工作目录。

它对我有用。

关于java - 如何为 JDI 启动连接器指定类路径;使用 Eclipse?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27140409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com