“JDT 核心”选项控制核心功能部件(如 Java 编译器、代码格式化程序和代码辅助)的行为以及其它核心行为。在 JavaCore 中定义了用于访问选项的 API。可以成组地访问选项,如下所示:
还可以通过字符串名称来个别地访问选项。
选项是作为所有已知可配置选项及其值的散列表存储的。在 JavaCore 上已经为每个选项标识及其可能的常量值定义了 helper 常量。
以下代码段将所有核心选项的值恢复为它们的缺省值,但 COMPILER_PB_DEPRECATION
除外,它是专门设置的。
// Get the current options
Hashtable options = JavaCore.getDefaultOptions();
// Change the value of an option
options.put(JavaCore.COMPILER_PB_DEPRECATION, JavaCore.ERROR);
// Set the new options
JavaCore.setOptions(options);
以下代码段保留当前选项的值并只修改一个选项(COMPILER_PB_DEPRECATION
):
// Get the current options
Hashtable options = JavaCore.getOptions();
// Change the value of an option
options.put(JavaCore.COMPILER_PB_DEPRECATION, JavaCore.ERROR);
// Set the new options
JavaCore.setOptions(options);
可以使用 IJavaProject 中的协议来逐个项目地覆盖选项的值。
以下代码段以两种不同的方法检索特定项目的选项(COMPILER_PB_DEPRECATION
)的值。布尔参数控制是只应该在查询中返回特定于项目的选项还是应该将项目的选项值与 JavaCore 中的值合并。
// Get the project IJavaProject project = ...; // See if the value of an option has been set in this project String value = project.getOption(JavaCore.COMPILER_PB_DEPRECATION, false); if (value == null) { // no specific option was set on the project ... } // Get the value of an option from this project. Use the value from // JavaCore value if none is specified for the project String value = project.getOption(JavaCore.COMPILER_PB_DEPRECATION, true);
下列各表描述可用的“JDT 核心”选项。选项标识显示在括号中,缺省值以粗斜体显示。
描述 | 值 |
---|---|
生成局部变量调试属性(COMPILER_LOCAL_VARIABLE_ATTR) | |
当生成局部变量调试属性时,此属性将使局部变量名称显示在调试器中,其位置仅在明确指定变量的位置(.class 文件就更大了) | GENERATE |
DO_NOT_GENERATE | |
生成行号调试属性(COMPILER_LINE_NUMBER_ATTR) | |
当生成行号调试属性时,此属性将使得在调试器中突出显示源代码(.class 文件就更大了)。 | GENERATE |
DO_NOT_GENERATE | |
生成源代码调试属性(COMPILER_SOURCE_FILE_ATTR) | |
当生成源代码调试属性时,此属性将使调试器显示相应的源代码。 | GENERATE |
DO_NOT_GENERATE | |
保留未使用的局部变量(COMPILER_CODEGEN_UNUSED_LOCAL) | |
除非请求保留未使用的局部变量(即,从未读取的局部变量),否则,编译器将把它们优化掉,从而潜在地改变调试。 | PRESERVE |
OPTIMIZE_OUT | |
定义目标 Java 平台(COMPILER_CODEGEN_TARGET_PLATFORM) | |
由于二进制兼容性方面的原因,可以用某些 VM 版本和更高版本来标记 .class 文件。注意,“1.4”目标也要求您将一致性方式切换为“1.4”。 | VERSION_1_1 |
VERSION_1_2 | |
VERSION_1_3 | |
VERSION_1_4 | |
报告不可达代码(COMPILER_PB_UNREACHABLE_CODE) | |
(可选)可以将不可达代码报告为错误、警告或者简单地忽略它。字节码生成将总是把它优化掉。 | ERROR |
WARNING | |
IGNORE | |
报告无效的导入(COMPILER_PB_INVALID_IMPORT) | |
(可选)可以将不能解析的导入语句报告为错误、警告或者忽略它。 | ERROR |
WARNING | |
IGNORE | |
报告要覆盖包缺省方法的尝试(COMPILER_PB_OVERRIDING_PACKAGE_DEFAULT_METHOD) | |
包缺省方法在不同包中不可视,因此不能覆盖它。当启用此选项时,对于这种方案,编译器将发出错误或警告信号。 | ERROR |
WARNING | |
IGNORE | |
报告具有构造函数名的方法(COMPILER_PB_METHOD_WITH_CONSTRUCTOR_NAME) | |
使用构造函数名来命名方法是一种不太好的编程方法。当启用此选项时,对于这种方案,编译器将发出错误或警告信号。 | ERROR |
WARNING | |
IGNORE | |
报告建议不要使用的内容(COMPILER_PB_DEPRECATION) | |
当启用此项时,如果使用了建议不要使用的 API,编译器将发出错误或警告信号。 | ERROR |
WARNING | |
IGNORE | |
报告建议不要使用的代码中的建议不要使用的内容(COMPILER_PB_DEPRECATION_IN_DEPRECATED_CODE) | |
当启用此项时,如果使用了建议不要使用的 API,编译器将发出错误或警告信号。 | ENABLED |
DISABLED | |
报告隐藏的 Catch 块(COMPILER_PB_HIDDEN_CATCH_BLOCK) | |
对于 try 语句局部而言,某些 catch 块可能隐藏其它内容,例如:try { throw new java.io.CharConversionException(); } catch (java.io.CharConversionException e) { } catch (java.io.IOException e) {}.启用此选项时,编译器将对与检查到的异常相对应的已隐藏 catch 块发出错误或警告 |
ERROR |
WARNING | |
IGNORE | |
报告未使用的局部变量(COMPILER_PB_UNUSED_LOCAL) | |
当启用此项时,编译器将对未使用的局部变量(即,从未读取的变量)发出错误或警告 | ERROR |
WARNING | |
IGNORE | |
报告未使用的参数(COMPILER_PB_UNUSED_PARAMETER) | |
当启用此项时,编译器将对未使用的方法参数(即,从未读取的参数)发出错误或警告 | ERROR |
WARNING | |
IGNORE | |
如果实现抽象方法,则报告未使用的参数(COMPILER_PB_UNUSED_PARAMETER_WHEN_IMPLEMENTING_ABSTRACT) | |
启用此项时,编译器将指出抽象方法实现中的未使用的参数。 | ENABLED |
DISABLED | |
如果覆盖具体方法,则报告未使用的参数(COMPILER_PB_UNUSED_PARAMETER_WHEN_OVERRIDING_CONCRETE) | |
启用此项时,编译器将指出覆盖具体方法的方法中的未使用的参数。 | ENABLED |
DISABLED | |
报告未使用的导入(COMPILER_PB_UNUSED_IMPORT) | |
当启用此项时,编译器将对未使用的导入引用发出错误或警告 | ERROR |
WARNING | |
IGNORE | |
报告未使用的私有成员(COMPILER_PB_UNUSED_PRIVATE_MEMBER) | |
启用此项时,每当声明了私有方法或字段但是从未在同一单元中使用它们时,编译器将发出错误或警告。 | ERROR |
WARNING | |
IGNORE | |
报告合成访问仿真(COMPILER_PB_SYNTHETIC_ACCESS_EMULATION) | |
启用此项时,每当编译器模拟访问封装类型的不可访问的成员时,编译器就会发出错误或警告。这种访问可能会影响性能。 | ERROR |
WARNING | |
IGNORE | |
报告未外部化的字符串文字(COMPILER_PB_NON_NLS_STRING_LITERAL) | |
当启用此项时,编译器将对未外部化的字符串文字(即,未使用 //$NON-NLS-<n>$ 来标记)发出错误或警告 | ERROR |
WARNING | |
IGNORE | |
报告“assert”标识的使用情况(COMPILER_PB_ASSERT_IDENTIFIER) | |
当启用此项时,每当将“assert”用作标识时(在 1.4 中是保留关键字),编译器将发出错误或警告 | ERROR |
WARNING | |
IGNORE | |
报告对静态成员的非静态引用(COMPILER_PB_STATIC_ACCESS_RECEIVER) | |
当启用此项时,每当使用表达式接收器访问静态字段或方法时,编译器将发出错误或警告。 | ERROR |
WARNING | |
IGNORE | |
报告无效的赋值(COMPILER_PB_NO_EFFECT_ASSIGNMENT) | |
当启用此项时,每当赋值无效时(例如“x = x”),编译器将发出错误或警告。 | ERROR |
WARNING | |
IGNORE | |
报告与非继承方法不兼容的接口方法(COMPILER_PB_INCOMPATIBLE_NON_INHERITED_INTERFACE_METHOD) | |
当启用此项时,每当接口定义与非继承 Object 方法不兼容的方法时,编译器将发出错误或警告。 | ERROR |
WARNING | |
IGNORE | |
报告 char[] 表达式在字符串并置中的使用(COMPILER_PB_CHAR_ARRAY_IN_STRING_CONCATENATION) | |
启用此项时,每当在字符串并置中使用 char[] 表达式时(例如 "hello" + new char[]{'w','o','r','l','d'}),编译器将发出错误或警告。 | ERROR |
WARNING | |
IGNORE | |
设置源代码兼容性方式(COMPILER_SOURCE) | |
指定源代码是否与 1.3 或 1.4 兼容。从 1.4 开始,“assert”是为断言支持保留的关键字。还要注意,当切换至 1.4 方式时,目标 VM 级别应设置为“1.4”,并且一致性方式应为“1.4”。 | VERSION_1_3 |
VERSION_1_4 | |
设置一致性级别(COMPILER_COMPLIANCE) | |
为编译器选择一致性级别。在“1.3”方式中,源设置和目标设置不应超出“1.3”级别。 | VERSION_1_3 |
VERSION_1_4 | |
每个编译单元报告的最大问题数(COMPILER_PB_MAX_PER_UNIT) | |
指定在每个编译单元上报告的最大问题数(如果最大值为零,则报告所有问题)。 | 一个正整数。 缺省值为 100 |
定义自动任务标记(COMPILER_TASK_TAGS) | |
当标记不是空白的时,每当编译器在 Java 源代码中的任何注释中遇到相应标记之一时,它将发出任务标记。生成的任务消息将包括该标记,其范围将延伸到下一个行分隔符或注释末尾处,并且将被修剪。 | {<tag>[,<tag>]*}。 缺省值为 "" |
定义自动任务优先级(COMPILER_TASK_PRIORITIES) | |
此列表与“自动任务标记”一起定义编译器发出的任务标记的优先级(高、普通或低)。如果指定了缺省值,则每个任务标记的优先级为“NORMAL”(普通)。 | {<priority>[,<priority>]*}。 缺省值为 "" |
描述 | 值 |
---|---|
为资源复制控制指定过滤器(CORE_JAVA_BUILD_RESOURCE_COPY_FILTER) | |
指定过滤器来控制资源复制过程。(<name> 是文件名模式(只允许使用 * 通配符)或以“/”结尾的文件夹的名称) | {<name>[,<name>]*}。 缺省值为 "" |
如果类路径无效,则异常终止(CORE_JAVA_BUILD_INVALID_CLASSPATH) | |
如果类路径无效,则指示构建器异常终止 | ABORT |
IGNORE | |
清除输出文件夹(CORE_JAVA_BUILD_CLEAN_OUTPUT_FOLDER) | |
指示执行完全构建操作时是否允许 JavaBuilder 清除输出文件夹。 | CLEAN |
IGNORE |
描述 | 值 |
---|---|
计算项目构建次序(CORE_JAVA_BUILD_ORDER) | |
指示 JavaCore 是否应该强制使项目构建次序基于类路径先决条件链。当请求计算时,这将取代平台缺省次序(基于项目引用)。 | COMPUTE |
IGNORE | |
指定缺省源代码编码格式(CORE_ENCODING) | |
获取已编译的源代码的编码格式。此设置是只读的,它等价于 ResourcesPlugin.getEncoding()。 | 任何受支持的编码名称。 缺省值是平台缺省值 |
报告不完整的类路径(CORE_INCOMPLETE_CLASSPATH) | |
指示当类路径中的条目不存在、不合法或不可视(例如,引用的项目已关闭)时报告的问题的严重性。 | ERROR |
WARNING | |
报告类路径循环(CORE_CIRCULAR_CLASSPATH) | |
指示循环涉及项目时报告的问题的严重性。 | ERROR |
WARNING | |
启用类路径排除模式的使用(CORE_ENABLE_CLASSPATH_EXCLUSION_PATTERNS) | |
当设置为“禁用”时,项目类路径中的条目不能与排除模式相关联。 | ENABLED |
DISABLED | |
启用类路径多个输出位置的使用(CORE_ENABLE_CLASSPATH_MULTIPLE_OUTPUT_LOCATIONS) | |
当设置为“禁用”时,项目类路径中的条目不能与特定输出位置相关联,从而防止使用多个输出位置。 | ENABLED |
DISABLED |
描述 | 值 |
---|---|
在左花括号前面插入新行(FORMATTER_NEWLINE_OPENING_BRACE) | |
如果插入,新行会插入到左花括号前面,否则不会插入任何内容 | INSERT |
DO_NOT_INSERT | |
在控制语句内插入新行(FORMATTER_NEWLINE_CONTROL) | |
如果插入,会在 } 与后面的 else、catch、finally 之间插入新行 | INSERT |
DO_NOT_INSERT | |
清除空白行(FORMATTER_CLEAR_BLANK_LINES) | |
如果选择“全部清除”,则会除去所有空白行。如果选择“保留一行”,将只保留一行,其它所有行都会除去。 | CLEAR_ALL |
PRESERVE_ONE | |
在 Else/If 之间插入新行(FORMATTER_NEWLINE_ELSE_IF) | |
如果选择“插入”,且 else 与 if 相邻的话,则会在 else 与 if 之间插入空白行。如果选择不插入,则 else-if 将保留在同一行上(如果可能的话)。 | INSERT |
DO_NOT_INSERT | |
在空白块中插入新行(FORMATTER_NEWLINE_EMPTY_BLOCK) | |
如果插入,且 } 后面未跟关键字的话,则会在相邻的 { 和 } 之间插入断行。 | INSERT |
DO_NOT_INSERT | |
分割超长行(FORMATTER_LINE_SPLIT) | |
启用分割较长的行(超过了可配置的长度)。如果长度为 0,则将禁用分行 | 一个正整数。 缺省值为 80 |
紧凑赋值(FORMATTER_COMPACT_ASSIGNMENT) | |
赋值可以不对称的格式进行,例如“int x= 2;”,如果选择“常规”,会在赋值操作符之前插入空格。 | COMPACT |
NORMAL | |
定义缩进字符(FORMATTER_TAB_CHAR) | |
选择使用制表符或者空格来标识缩进 | TAB |
SPACE | |
定义空格缩进长度(FORMATTER_TAB_SIZE) | |
当使用空格时,设置要用于每个缩进标记的空格字符数。 | 一个正整数。 缺省值是 4 |
在强制转型表达式中插入空格(FORMATTER_SPACE_CASTEXPRESSION) | |
当为“插入”时,在强制转型表达式的类型与表达式之间添加一个空格。 | INSERT |
DO_NOT_INSERT |
描述 | 值 |
---|---|
激活与可视性敏感的补全(CODEASSIST_VISIBILITY_CHECK) | |
当活动时,补全不显示您看不见的内容(例如,您看不到超类的私有方法)。 | ENABLED |
DISABLED | |
自动限定隐式成员(CODEASSIST_IMPLICIT_QUALIFICATION) | |
当活动时,补全将自动限定隐式字段引用和消息表达式的完成。 | ENABLED |
DISABLED | |
定义字段名的前缀(CODEASSIST_FIELD_PREFIXES) | |
当前缀不是空白时,字段名的补全将以其中一个建议的前缀开始。 | {<prefix>[,<prefix>]*}。 缺省值为 "" |
定义静态字段名的前缀(CODEASSIST_STATIC_FIELD_PREFIXES) | |
当前缀不是空白时,静态字段名的补全将以其中一个建议的前缀开始。 | {<prefix>[,<prefix>]*}。 缺省值为 "" |
定义局部变量名的前缀(CODEASSIST_LOCAL_PREFIXES) | |
当前缀不是空白时,局部变量名的补全将以其中一个建议的前缀开始。 | {<prefix>[,<prefix>]*}。 缺省值为 "" |
定义自变量名的前缀(CODEASSIST_FIELD_PREFIXES) | |
当前缀不是空白时,自变量名的补全将以其中一个建议的前缀开始。 | {<prefix>[,<prefix>]*}。 缺省值为 "" |
定义字段名的后缀(CODEASSIST_FIELD_SUFFIXES) | |
当后缀不是空白时,字段名的补全将以其中一个建议的后缀结束。 | {<suffix>[,<suffix>]*}。 缺省值为 "" |
定义静态字段名的后缀(CODEASSIST_STATIC_FIELD_SUFFIXES) | |
当后缀不是空白时,静态字段名的补全将以其中一个建议的后缀结束。 | {<suffix>[,<suffix>]*}。 缺省值为 "" |
定义局部变量名的后缀(CODEASSIST_LOCAL_SUFFIXES) | |
当后缀不是空白时,局部变量名的补全将以其中一个建议的后缀结束。 | {<suffix>[,<suffix>]*}。 缺省值为 "" |
定义自变量名的后缀(CODEASSIST_ARGUMENT_SUFFIXES) | |
当后缀不是空白时,自变量名的补全将以其中一个建议的后缀结束。 | {<suffix>[,<suffix>]*}。 缺省值为 "" |