JDT 核心选项

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 Core 3.0 选项中的主要更改

缺省一致性级别已更改。现在缺省一致性级别是 1.4 而不是 1.3,缺省目标平台是 1.2 而不是 1.1

JDT 核心选项描述

下列各表描述可用的 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
内联 JSR 字节码指令COMPILER_CODEGEN_INLINE_JSR_BYTECODE
当启用此项时,编译器将不再生成 JSR 指令,而是内联相应的子例程代码序列(大多数相应于最终的 try 块)。因此,生成的代码将更大,但因为验证过程简单了很多,因此在虚拟机上的装入速度更快。此方式是 Java Specification Request 202 的预期支持。 ENABLED
DISABLED
Javadoc 注释支持COMPILER_DOC_COMMENT_SUPPORT
当禁用此支持时,编译器将忽略所有 javadoc 问题选项设置,并且将不报告任何 javadoc 问题。它也不会查找 javadoc 注释中的任何引用,并且 DOM AST Javadoc 节点将只是一个平面文本而没有结构化标记元素。 ENABLED
DISABLED
报告不可达代码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
报告覆盖建议不要使用的方法时建议不要使用的内容COMPILER_PB_DEPRECATION_WHEN_OVERRIDING_DEPRECATED_METHOD
当启用此项时,编译器将发出信号指出,声明了覆盖不建议使用的方法的方法。 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_INDIRECT_STATIC_ACCESS
当启用此项时,每当以间接方式访问静态字段或方法时,编译器将发出错误或警告。最好使用声明的类型名来限定对静态成员的引用。 ERROR
WARNING>
IGNORE
报告无效的赋值COMPILER_PB_NO_EFFECT_ASSIGNMENT
当启用此项时,每当赋值无效时(例如“x = x”),编译器将发出错误或警告。 ERROR
WARNING
IGNORE
报告空语句和不必要的分号COMPILER_PB_EMPTY_STATEMENT
当启用此项时,如果遇到空语句或不必要的分号,编译器将发出错误或警告。 ERROR
WARNING
IGNORE
报告不必要的类型检查COMPILER_PB_UNNECESSARY_TYPE_CHECK
当启用此项时,在强制类型转换或 instanceof 操作不必要时,编译器将发出错误或警告。 ERROR
WARNING
IGNORE
报告不必要的 ElseCOMPILER_PB_UNNECESSARY_ELSE
当启用此项时,如果语句不必要地嵌套在 else 子句中时(在 then 子句未正常完成的情况下),编译器将发出错误或警告。 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_PB_LOCAL_VARIABLE_HIDING
当启用此项时,每当局部变量声明隐藏某个字段或局部变量(以本地方式继承或以封装类型定义)时,编译器将发出错误或警告。 ERROR
WARNING
IGNORE
报告隐藏另一个变量的字段声明COMPILER_PB_FIELD_HIDING
当启用此项时,每当字段声明隐藏某个字段或局部变量(以本地方式继承或以封装类型定义)时,编译器将发出错误或警告。 ERROR
WARNING
IGNORE
报告隐藏另一个字段的特殊参数COMPILER_PB_SPECIAL_PARAMETER_HIDING_FIELD
当启用此项时,编译器将在构造函数或 setter 方法参数声明隐藏某个字段(以本地方式继承或以封装类型定义)时发信号指出这些情况。 ENABLED
DISABLED
报告可能的意外布尔赋值COMPILER_PB_POSSIBLE_ACCIDENTAL_BOOLEAN_ASSIGNMENT
当启用此项时,如果布尔赋值充当控制语句的条件(这可能意味着要进行布尔比较),则编译器将发出错误或警告。 ERROR
WARNING
IGNORE
报告未说明的空块COMPILER_PB_UNDOCUMENTED_EMPTY_BLOCK
当启用此项时,如果检测到空块且该空块未使用任何注释进行说明,则编译器将发出错误或警告。 ERROR
WARNING
IGNORE
报告最终未正常完成的块COMPILER_PB_FINALLY_BLOCK_NOT_COMPLETING
当启用此项时,如果块最终未正常完成,则编译器将发出错误或警告。 ERROR
WARNING
IGNORE
报告未使用且已声明的抛出异常COMPILER_PB_UNUSED_DECLARED_THROWN_EXCEPTION
当启用此项时,如果方法或构造函数声明抛出的已校验的异常,但从未在其主体中实际地使用它,则编译器将发出错误或警告。 ERROR
WARNING
IGNORE
报告覆盖方法中未使用且已声明的抛出异常COMPILER_PB_UNUSED_DECLARED_THROWN_EXCEPTION_WHEN_OVERRIDING
当禁用此项时,编译器将不会为未使用且已声明的抛出异常将覆盖方法包括在其诊断中。 ENABLED
DISABLED
报告对字段的未限定访问COMPILER_PB_UNQUALIFIED_FIELD_ACCESS
当启用此项时,如果访问字段而没有任何限定,编译器将发出错误或警告。为了改进代码可读性,应限定代码,例如,应将“x”写成“this.x”。 ERROR
WARNING
IGNORE
报告无效的 Javadoc 注释COMPILER_PB_INVALID_JAVADOC
这是对 Javadoc 问题的严重性的一般控制。当启用此项时,编译器将对 Javadoc 中的问题发出错误或警告。 ERROR
WARNING
IGNORE
无效 Javadoc 标记的可视性级别COMPILER_PB_INVALID_JAVADOC_TAGS_VISIBILITY
为 Javadoc 标记问题设置最小的可视性级别。将忽略此级别之下的问题。 PUBLIC
PROTECTED
DEFAULT
PRIVATE
报告无效的 Javadoc 标记COMPILER_PB_INVALID_JAVADOC_TAGS
当启用此项时,编译器将发信号指出 Javadoc 中未绑定或意外的引用标记。引用未声明的异常的“throws”标记将被认为是意外。
注意,可以基于与 Javadoc 相关联的构造的可视性来启用此诊断;另请参阅“org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility”设置。
ENABLED
DISABLED
报告缺少的 Javadoc 标记COMPILER_PB_MISSING_JAVADOC_TAGS
这是对 Javadoc 缺少标记问题的严重性的一般控制。当启用此项时,如果 Javadoc 注释中缺少标记,编译器将发出错误或警告。
注意,可以基于与 Javadoc 相关联的构造的可视性来启用此诊断。
ERROR
WARNING
IGNORE
缺少的 Javadoc 标记的可视性级别COMPILER_PB_MISSING_JAVADOC_TAGS_VISIBILITY
为 Javadoc 缺少标记问题设置最小的可视性级别。将忽略此级别之下的问题。 PUBLIC
PROTECTED
DEFAULT
PRIVATE
报告覆盖方法中缺少的 Javadoc 标记COMPILER_PB_MISSING_JAVADOC_TAGS_OVERRIDING
指定编译器是否将验证覆盖方法以报告 Javadoc 缺少标记问题。 ENABLED
DISABLED
报告缺少的 Javadoc 注释COMPILER_PB_MISSING_JAVADOC_COMMENTS
这是对缺少 Javadoc 注释问题的严重性的一般控制。当启用此项时,如果缺少 Javadoc 注释,编译器将发出错误或警告。
注意,可以基于与期望的 Javadoc 相关联的构造的可视性来启用此诊断。
ERROR
WARNING
IGNORE
缺少的 Javadoc 注释的可视性级别COMPILER_PB_MISSING_JAVADOC_COMMENTS_VISIBILITY
为缺少 Javadoc 问题设置最小的可视性级别。将忽略此级别之下的问题。 PUBLIC
PROTECTED
DEFAULT
PRIVATE
报告覆盖方法中缺少 Javadoc 注释COMPILER_PB_MISSING_JAVADOC_COMMENTS_OVERRIDING
指定编译器是否将验证覆盖方法以报告缺少 Javadoc 注释问题。 ENABLED
DISABLED
设置源代码兼容性方式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>]*}。
缺省值为“TODO,FIXME,
XXX”
定义自动任务优先级COMPILER_TASK_PRIORITIES
此列表与“自动任务标记”一起定义编译器发出的任务标记的优先级(高、普通或低)。如果指定了缺省值,则每个任务标记的优先级为“NORMAL”(普通)。可能的优先级为“HIGH”、“NORMAL”或“LOW” {<priority>[,<priority>]*}。
缺省值为“NORMAL,HIGH,
NORMAL”
确定任务标记是否区分大小写COMPILER_TASK_CASE_SENSITIVE
当启用此项时,任务标记被认为是区分大小写的。 ENABLED
DISABLED

构建器选项

描述
为资源复制控制指定过滤器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_DUPLICATE_RESOURCE
如果类路径无效,则指示构建器异常终止 ERROR
WARNING

JavaCore 选项

描述
计算项目构建次序CORE_JAVA_BUILD_ORDER
指示 JavaCore 是否应该强制使项目构建次序基于类路径先决条件链。当请求计算时,这将取代平台缺省次序(基于项目引用)。 COMPUTE
IGNORE
指定缺省源代码编码格式CORE_ENCODING
获取已编译的源代码的编码格式。此设置是只读的,它等价于 ResourcesPlugin.getEncoding() 任何受支持的编码名称。
缺省值是平台缺省值
报告不完整的类路径CORE_INCOMPLETE_CLASSPATH
指示当类路径中的条目不存在、不合法或不可视(例如,引用的项目已关闭)时报告的问题的严重性。 ERROR
WARNING
报告类路径循环CORE_CIRCULAR_CLASSPATH
指示循环涉及项目时报告的问题的严重性。 ERROR
WARNING
报告必需的二进制的不兼容 JDK 级别CORE_INCOMPATIBLE_JDK_LEVEL
指示当项目以具有不兼容的目标 JDK 级别的另一项目或库为先决条件(例如,项目以 1.1 vm 为目标,但针对 1.4 库进行了编译)时所报告的严重性。 ERROR
WARNING
IGNORE
启用类路径排除模式的使用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>]*}。
缺省值为 ""

法律声明