小编use*_*411的帖子

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

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

我想使用com.sun.jdi.connect.LaunchingConnector启动调试程序。它需要类Map <String,Argument>的参数。映射条目之一具有键“ main”,并且其关联对象包含一个字符串,该字符串是调试对象的主类名称。就我而言,就是“ debuggee.DebuggerTest”。调用启动程序的程序具有主类“ debugger.TraceLaunch”。

我的Eclipse项目具有默认结构,因此每个文件夹都有一个名为“ classes”的文件夹,其中包含一个子文件夹。就我而言,它们是“ com”,“ debugger”和“ debuggee”。“ com”包包括“ Example JDI Applications ”中的所有类。

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

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

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

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

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

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

java debugging launching connector classpath

3
推荐指数
1
解决办法
387
查看次数

标签 统计

classpath ×1

connector ×1

debugging ×1

java ×1

launching ×1