Java 开发工具(JDT)- 发行说明

1.0 简介
2.0 已知问题与限制
    2.1 运行包名或类名中具有非 Latin-1 字符的 Java 程序
    2.2 缺少调试属性
    2.3 设置断点
    2.4 使用热代码替换
    2.5 代码片段编辑测试窗
    2.6 通过慢速连接来进行调试
    2.7 更新检查的值
    2.8 单步跳过执行 I/O 的本机方法
    2.9 搜索常量字段引用
    2.10 构建类路径外部的 Java 编译单元
    2.11 用来修改只读文件的操作
    2.12 Java 代码模板
    2.13 组织从缺省包进行的一次和多次导入
    2.14 字段的添加 Javadoc 操作
    2.15 Java 编辑器中的 Javadoc 悬浮式帮助
    2.16 新的 Java 类中显示 HTML 代码 > 而不是 >
    2.17 打开类文件编辑器时产生的问题
    2.18 不能在项目名中具有 GB18030 字符的项目中运行或调试类
    2.19 无法调试堆栈溢出
    2.20 求值限制   
    2.21 构建类路径外部的断点  
    2.22 快速修订和从缺省包中导入   
    2.23 对于显示了 Java 元素的视图中已链接的资源,剪切、复制和粘贴不起作用
    2.24 对于 JRE 系统库容器中的元素,Java 工作集将不能正确工作   
    2.25 对于名称中包含 GB18030 字符的包不能生成 Javadoc
    2.26 链接编辑不能以覆盖方式正确工作
    2.27 如果最后一行是行注释,则捕捉块代码生成模板必须以换行符结束

1.0 简介

本节包含有关 Java 开发工具的已知问题与限制的信息。

2.0 已知问题与限制

2.1 运行包名或类名中具有非 Latin-1 字符的 Java 程序

当运行包名或类名中具有非 Latin 字符的 Java 程序时,将发生 java.lang.NoClassDefFoundError。要解决此问题,将类文件作为 JAR 文件封装,并在 JAR 外部运行程序而不是直接从文件系统中运行程序。

2.2 缺少调试属性

调试器要求使用调试属性来编译类文件才能显示行号和局部变量。通常,并没有使用全部的调试属性编译类库(例如,rt.jar),因此,那些类的局部变量和方法自变量在调试器中不可视。

2.3 设置断点

通常,调试器不允许在不可执行的代码行(注释、空白行等等)上放置断点。然而,在某些情况下,调试器允许在不可执行的代码行上放置断点。例如,调试器允许在不包含初始化程序的变量声明上放置断点。注意,已成功地安装在正在运行的(可调试的)VM 中的可执行行上的已启用断点将显示为具有选择标记。显示为没有选择标记的断点则未安装在正在运行的(可调试的)VM 中。

2.4 使用热代码替换

热代码替换在 JDK 1.4.x VM 和 IBMR J9 VM 上是受支持的。热代码替换仅限于不会影响类的形状的那些更改。即,支持现有方法中的更改,但是不支持添加或除去成员。

热代码替换和单步执行在 JDK 1.4.0 VM 上是不可靠的。 

2.5 代码片段编辑测试窗

不支持在代码片段编辑测试窗页面中设置断点。

当在代码片段编辑测试窗中运行直接或间接调用 System.exit(int) 的代码时,求值不仅不能完成,并且还会导致 com.sun.jdi.VMDisconnectedException 的堆栈跟踪显示在代码片段编辑测试窗编辑器中。

当代码片段编辑测试窗页面正在执行求值时,终止它将会导致 com.sun.jdi.VMDisconnectedException 显示在代码片段编辑测试窗编辑器中。

2.6 通过慢速连接来进行调试

全局 Java 调试首选项指定了调试器超时,这是调试器在向目标 VM 发出请求后等待来自该 VM 的响应的最大时间量。慢速连接可能要求增大此值。可以从 Java > 调试首选项页面中编辑超时值。更改超时值将只影响后续启动的 VM,而不会影响当前已经在运行的 VM。

2.7 更新检查的值

当在调试器中检查已求值的表达式的结果时,重要的是需要注意所显示的结果是该表达式在进行求值时的结果。例如,当检查简单整数计数器(基本数据类型)时,显示在“表达式”视图中的值是对表达式进行求值时的值。在正在运行的程序中更改该计数器时,检查的结果不会更改(这是因为视图不显示与变量绑定的值 - 它显示的是表达式的值,而基本数据类型的值不能更改)。然而,如果表达式的结果是对象,在正在运行的程序中更改该对象的字段时,就会在检查器中更新它们(这是因为与对象中的字段绑定的值可以更改)。

2.8 单步跳过执行 I/O 的本机方法

当调试器单步跳过对 System.outSystem.err 执行 I/O 的本机方法时,除非本机方法对输出缓冲区执行清仓,否则不会立即出现输出。

2.9 搜索常量字段引用

搜索不会查找对二进制文件中的常量字段的引用,原因是“Java 语言规范”要求将常量字段值直接插入类文件的字节码中,而不保留对字段引用的跟踪。

2.10 构建类路径外部的 Java 编译单元

当将具有编译问题的编译单元移到 Java 构建类路径外部时,将永远保留它的 Java 问题(不会刷新其编译问题列表,原因是再也不会编译它)。将 *.java 文件重命名为具有另一个不同的文件扩展名后缀的文件会导致相同的问题。

2.11 用来修改只读文件的操作

当文件为只读时,始终会禁用源代码菜单上的操作(例如,生成 Getter 和 Setter)。当前,即使资源库提供程序支持在修改时自动检出文件,情况也是这样。

2.12 Java 代码模板

不能在 Java 代码模板(窗口 > 首选项 > Java > 模板)中的注释中使用 ${CURSOR}

2.13 组织从缺省包进行的一次和多次导入

组织导入不会处理从缺省包导入。注意,JDK 1.4 中不再支持从缺省包中导入。 

2.14 为字段添加 Javadoc 操作

添加 Javadoc 操作对字段不起作用。

2.15 Java 编辑器中的 Javadoc 悬浮式帮助

当鼠标指针悬浮在 Java 编辑器中的标识上时显示的 Javadoc 悬浮式帮助不会正确处理 Javadoc 注释中的链接。

2.16 新的 Java 类中显示 HTML 代码 > 而不是 >

当创建新的 Java 类时,生成的注释内容为:

要更改生成的此文件的模板,转至“窗口 > 首选项 > Java > 代码生成 > 代码和注释”。

将使用大于(>)符号的 HTML 代码而不使用符号本身。注释应为如下所示:

要更改此生成文件的模板,转至“窗口”>“首选项”>“Java”>“生成代码”>“代码和注释”。

2.17 打开类文件编辑器时产生的问题

如果已经在插件开发 > Java 构建路径控制首选项页面上启用了“使用类路径容器”首选项,则可能对“必需的插件条目”容器中的 JAR 中包含的类文件打不开类文件编辑器。解决此问题的一种方法是在“包资源管理器”中展开类文件;这将象编辑器一样显示类文件的结构。如果为 JAR 提供了源代码压缩文件,则另一个选项是将源连接至 JAR 文件。

要将源连接至“必需的插件条目”容器中的 JAR,遵循下列步骤:

  1. 在“包资源管理器”中,选择项目,并从上下文菜单中打开项目 > 属性
  2. 选择 Java 构建路径页面
  3. 转至页面
  4. 展开“必需的插件条目”这一项
  5. 展开 JAR 的项
  6. 选择源连接,并单击编辑
  7. 输入相应的源压缩文件的位置。
  8. 单击确定以确认。

2.18 不能在项目名中具有 GB18030 字符的项目中运行或调试类

当指定的命令行包含 GB18030 字符时,大多数类库都不能正确地支持(通过 java.lang.Runtime.exec(...))来创建系统过程。此限制意味着当调试器生成的命令行包含 GB18030 字符时,调试器不能启动应用程序。

2.19 无法调试堆栈溢出

如果调试会话因 java.lang.StackOverflowError 异常(由于异常断点)而被暂挂,则调试器不能从目标 JVM 中检索任何调试信息。另外,调试器不能可靠地与目标 JVM 交互作用来解决此问题。

2.20 求值限制

调试器使用目标 JVM 中的线程来执行求值(用户请求的显式求值以及隐式求值(例如,变量视图中的 toString() 调用))。“Java 调试接口”(JDI)要求执行求值的线程由用户事件(即,断点或单步请求)暂挂。不能对由暂挂操作暂挂的线程执行求值。另外,当配置了断点来暂挂 JVM 而不只是个别线程,则未遇到断点的线程并不处于执行求值的有效状态。当在并不处于执行求值的有效状态的线程中尝试进行求值时,将出现错误消息,表明“线程一定是被步骤或断点暂挂了,无法执行方法调用”。

2.21 构建类路径外部的断点

只能在项目的构建类路径上包含的 Java 元素上创建断点。如果从项目的构建路径中除去了断点的相关联 Java 元素,则 Java 调试器会自动删除这些断点。但是,如果更改构建路径时尚未装入调试插件,这些断点就将保留在工作空间中,并且,当用户从“断点”视图中尝试转至与断点相关联的文件时可能会导致错误。

2.22 快速修订和从缺省包中导入

快速修订不会处理从缺省包中导入。注意,JDK 1.4 中不再支持从缺省包中导入。

2.23 对于显示了 Java 元素的视图中已链接的资源,剪切、复制和粘贴不起作用

对于显示 Java 元素的视图(包括“包资源管理器”)中出现的已链接文件和文件夹,剪切、复制和粘贴操作不起作用。变通方法是从“导航器”视图中执行这些操作。

2.24 对于 JRE 系统库容器中的元素,Java 工作集将不能正确工作

将完全由 JRE 系统库容器中的元素组成的工作集作为一个过滤器应用于包视图可能会导致“包资源管理器”是空的。

2.25 对于名称中包含 GB18030 字符的包不能生成 Javadoc

当指定的命令行包含 GB18030 字符时,大多数类库都不能正确地支持(通过 java.lang.Runtime.exec(...))来创建系统过程。由于 Javadoc 是使用随 JDK 一起提供的 Javadoc 可执行文件创建的,因此,如果包或类名包含 GB18030 字符,就不能生成 Javadoc。

2.26 链接编辑不能以覆盖方式正确工作

链接编辑用于重命名单个编译单元中的元素以及多次出现同一模板变量的模板。链接编辑不能以覆盖方式正确工作。

2.27 如果最后一行是行注释,则捕捉块代码生成模板必须以换行符结束

如果捕捉块代码生成模板的最后一行是行注释,则该行必须以换行符终止。否则,关闭波形括号将在注释行上结束,从而导致编译错误。

返回到主自述文件