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 VM 和进程在 Linux 上的 IBM 1.3 JVM 上运行时终止
    2.12 用来修改只读文件的操作
    2.13 Java 代码模板
    2.14 组织导入和从缺省包导入
    2.15 字段的添加 Javadoc 操作
    2.16 Java 编辑器中的 Javadoc 悬浮式帮助
    2.17 新的 Java 类中显示 HTML 代码 > 而不是 >
    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 如果最后一行是行注释,则捕捉块代码生成模板必须以换行符结束
    2.28 打开类文件编辑器时产生问题

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 VM 和进程在 Linux 上的 IBM 1.3 JVM 上运行时终止

当在 Linux 平台上的 IBM 1.3 JVM 上运行的调试目标具有暂挂线程时,终止与该调试目标相关联的启动、调试目标或系统进程不起作用。要从调试用户界面除去这样的调试目标,从调试视图的弹出菜单选择“终止并除去”(或使用“删除”快捷键)。 可能不能正确清除操作系统中相关联的系统进程。如果调试目标没有任何暂挂线程,终止将正常工作。

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

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

2.13 Java 代码模板

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

2.14 组织导入和从缺省包导入

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

2.14 字段的添加 Javadoc 操作

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

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

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

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

在创建新 Java 类时,生成的注释为:

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

将使用大于号(>)的 HTML 代码而不是大于号本身。注释应为:

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

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 调试器将自动删除这些断点。但是,如果在更改构建路径时未装入 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 如果最后一行是行注释,则捕捉块代码生成模板必须以换行符结束

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

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

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

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

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

返回到主自述文件