Bug 548218 - Should the warning "There are no JREs installed in the
workspace that are strictly compatible with this environment" respect
the --release option?
Change-Id: I1344b0da9d007c8f1ec4093510b89d4914f0fff4
diff --git a/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/EECompilationParticipant.java b/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/EECompilationParticipant.java
index 0cbd2fa..286c12a 100644
--- a/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/EECompilationParticipant.java
+++ b/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/EECompilationParticipant.java
@@ -116,25 +116,45 @@
}
/**
+ * Validates if --release flag is enabled for the project.
+ *
+ * @param eeId
+ * execution environment ID
+ * @param compId
+ * project compliance
+ * @param project
+ * associated project
+ * @return <code>true</code> if --release flag if enabled else <code>false</code>
+ */
+
+ private boolean isReleaseFlagEnabled(String eeId, String compId, final IJavaProject project) {
+ boolean releaseFlagEnabled = false;
+ if (JavaCore.compareJavaVersions(JavaCore.VERSION_9, eeId) <= 0) {
+ if (JavaCore.compareJavaVersions(JavaCore.VERSION_1_6, compId) <= 0) {
+ String releaseVal = project.getOption(JavaCore.COMPILER_RELEASE, true);
+ if (JavaCore.ENABLED.equals(releaseVal)) {
+ releaseFlagEnabled = true;
+ }
+ }
+ }
+ return releaseFlagEnabled;
+ }
+
+ /**
* Validates the compliance, creating a problem marker for the project as required.
*
- * @param id execution environment ID
- * @param project associated project
- * @param vm VM binding resolved for the project
+ * @param eeId
+ * execution environment ID
+ * @param project
+ * associated project
+ * @param vm
+ * VM binding resolved for the project
*/
private void validateCompliance(String eeId, final IJavaProject project, IVMInstall vm) {
String id = project.getOption(JavaCore.COMPILER_COMPLIANCE, true);
if (!eeId.equals(id)) {
- boolean validateCompliance = true;
- if (JavaCore.compareJavaVersions(JavaCore.VERSION_9, eeId) <= 0) {
- if (JavaCore.compareJavaVersions(JavaCore.VERSION_1_6, id) <= 0) {
- String releaseVal = project.getOption(JavaCore.COMPILER_RELEASE, true);
- if (JavaCore.ENABLED.equals(releaseVal)) {
- validateCompliance = false;
- }
- }
- }
- if (validateCompliance) {
+ // validate compliance only if release flag is not enabled
+ if (!isReleaseFlagEnabled(eeId, id, project)) {
IExecutionEnvironmentsManager manager = JavaRuntime.getExecutionEnvironmentsManager();
IExecutionEnvironment[] environments = manager.getExecutionEnvironments();
IExecutionEnvironment finalEnvironment = null;
@@ -185,6 +205,13 @@
}
String message = null;
if (exact == 0) {
+ if (vm instanceof IVMInstall2) {
+ String eeId = getCompilerCompliance((IVMInstall2) vm);
+ String compId = project.getOption(JavaCore.COMPILER_COMPLIANCE, true);
+ if (eeId != null && isReleaseFlagEnabled(eeId, compId, project)) {
+ return;
+ }
+ }
message = NLS.bind(
LaunchingMessages.LaunchingPlugin_35,
new String[]{environment.getId()});