在正常开发期间,应该不需要考虑由每个 Visual Editor 实例使用的 VM。但是,高级用户可以对工作台进行配置,以便将任何发送至 VM 的 System.out 或 System.err 的消息写入工作空间中 .metadata 目录中的 .log 文件。
用来执行 Java Bean 的虚拟机(VM)不是正在运行工作台的 VM。将为每个 Visual Editor 实例创建不同的 VM。此 VM 的类路径将被设置成项目的 Java 构建路径中的条目。如果在 Visual Editor 处于打开状态时更改了 Java 构建路径,则必须关闭任何已打开的编辑器并重新打开它们才能反映更新后的构建路径。
启动工作台时,可以指定指向一个文本文件的 -DEBUG 选项:
-DEBUG file:/c:/temp/options.txt
调试文件包含由 Visual Editor 读取的条目。如果该文件包含下面这一行,则任何发送至 System.out 或 System.err 的消息都会显示在控制台中:
org.eclipse.jem.proxy/remote/debug/vmtraceout=true
除了从 Visual Editor 所使用的 VM 中显示控制台输出之外,还可以通过调试方式启动它并执行远程调试。此方案未经优化,在 Visual Editor 的将来版本中可能会对其进行更改。但还是提供了此方案以备您在设计时需要执行 Java Bean 调试。要执行远程调试,需要运行两个工作台:一个是带有所要调试的 Java Bean 的工作台,另一个是可以执行基于套接字的远程调试的工作台。这两个工作台可以在同一台机器上运行,也可以在不同的机器上运行。为了对 Visual Editor 的 VM 进行调试,-DEBUG 文件应该包含下面这一行:
org.eclipse.jem.proxy/remote/debug/debugvm=true
Visual Editor 每次启动 VM 时,它都会询问您是否要以调试方式启动。
当使用 Visual Editor 来打开项目 Test 中的类 HelloFrame.java 时,将显示以上对话框。如果选择“是”,即在控制台中输入 Y 并按 Enter 键,VM 就会以暂挂方式启动,并且 -Xdebug 使用套接字连接器。将分配可用的端口。然后,会告知您端口号。
下一步是将远程调试器连接至端口号 7078。当远程调试器连接时,运行 Visual Editor 的工作台实例将被暂挂,因此,必须从另一个应用程序中使用调试器。如果该应用程序是另一个工作台实例,则可以使用菜单选项调试 > 调试并创建新的“远程 Java 应用程序”配置来开始进行远程调试。
输入先前写至标准输出的端口号,在本例中是 7078。如果调试器在另一台机器上,则应该在主机字段中输入运行所调试工作台的机器的 IP 地址。要启动远程调试器,请单击调试,然后在所调试的工作台的标准输入控制台中输入 y。
除了会提示您调试由每个 Visual Editor 实例使用的 VM 以外,您还将看到提示您调试项目本身的消息:
要以调试方式启动远程 VM(项目 (Test)-Beaninfo)吗?(输入 Y 或 N):
这是针对用于自省且运行 java.beans.Introspector 的 VM 的,并且因为它未指定特定 Java 源文件名,所以可以与用于 Visual Editor 的 VM 区分开来。当项目中首次需要 Java Bean 的任何 Bean 信息时,就会启动此 VM,并且只要该项目仍然打开,此 VM 就会保持处于活动状态。通过调试此项目,可以在自省 Java Bean 时单步执行和分析 BeanInfo 类中的任何代码。对于每个使用了 Java Bean 类的项目,将对每个 Java Bean 类执行一次自省。结果将保存在高速缓存中,这有助于提高性能。在任何时候,如果需要清除为项目保存的 BeanInfo 信息的高速缓存,则可以从项目的弹出菜单中关闭然后打开该项目。