diff --git a/bundles/org.eclipse.rap.tools.launch/src/org/eclipse/rap/tools/launch/internal/RAPLaunchDelegate.java b/bundles/org.eclipse.rap.tools.launch/src/org/eclipse/rap/tools/launch/internal/RAPLaunchDelegate.java
index 3334ed1..18dd8cd 100644
--- a/bundles/org.eclipse.rap.tools.launch/src/org/eclipse/rap/tools/launch/internal/RAPLaunchDelegate.java
+++ b/bundles/org.eclipse.rap.tools.launch/src/org/eclipse/rap/tools/launch/internal/RAPLaunchDelegate.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2013 EclipseSource and others.
+ * Copyright (c) 2007, 2020 EclipseSource and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -288,6 +288,7 @@
     final boolean[] terminated = { false };
     DebugPlugin debugPlugin = DebugPlugin.getDefault();
     debugPlugin.addDebugEventListener( new IDebugEventSetListener() {
+      @Override
       public void handleDebugEvents( DebugEvent[] events ) {
         for( DebugEvent event : events ) {
           if( isTerminateEventFor( event, previousLaunch ) ) {
@@ -373,16 +374,13 @@
   private void clearDataLocation( ILaunchConfiguration configuration, IProgressMonitor monitor )
     throws CoreException
   {
-    String resolvedDataLocation = getResolvedDataLoacation();
-    boolean isCleared = clearWorkspace( configuration, resolvedDataLocation, monitor );
-    if( !isCleared ) {
-      throw new CoreException( Status.CANCEL_STATUS );
-    }
+    clearWorkspace( configuration, getResolvedDataLoacation(), monitor );
   }
 
   private void registerBrowserOpener() {
     DebugPlugin debugPlugin = DebugPlugin.getDefault();
     debugPlugin.addDebugEventListener( new IDebugEventSetListener() {
+      @Override
       public void handleDebugEvents( DebugEvent[] events ) {
         for( DebugEvent event : events ) {
           if( isCreateEventFor( event, launch ) ) {
@@ -439,6 +437,7 @@
     final IWebBrowser[] result = { null };
     final CoreException[] exception = { null };
     Display.getDefault().syncExec( new Runnable() {
+      @Override
       public void run() {
         try {
           IWorkbench workbench = PlatformUI.getWorkbench();
@@ -473,6 +472,7 @@
   private static void openUrl( final IWebBrowser browser, final URL url ) throws PartInitException {
     final PartInitException[] exception = { null };
     Display.getDefault().asyncExec( new Runnable() {
+      @Override
       public void run() {
         try {
           browser.openURL( url );
