Launch classid validation async to not slowdown eclipse startup.
diff --git a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/classid/ClassIdDuplicateResolution.java b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/classid/ClassIdDuplicateResolution.java
index 5de5180..989519e 100644
--- a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/classid/ClassIdDuplicateResolution.java
+++ b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/classid/ClassIdDuplicateResolution.java
@@ -97,7 +97,7 @@
             catch (CoreException e) {
               //nop
             }
-            ClassIdValidationJob.execute(0); // the modification of the annotation does not cause an annotation modify event to be triggered
+            ClassIdValidationJob.executeAsync(0); // the modification of the annotation does not cause an annotation modify event to be triggered
           }
         });
         j.schedule();
diff --git a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/classid/ClassIdValidationJob.java b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/classid/ClassIdValidationJob.java
index fbe20b7..cd025eb 100644
--- a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/classid/ClassIdValidationJob.java
+++ b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/classid/ClassIdValidationJob.java
@@ -236,21 +236,27 @@
         IAnnotation annotation = (IAnnotation) event.getElement();
         if (annotation != null && annotation.getElementName().endsWith(Signature.getSimpleName(IRuntimeClasses.ClassId))) {
           if (TypeUtility.exists(event.getElement())) {
-            execute(0);
+            executeAsync(1000);
           }
         }
       }
     }
   }
 
-  public static synchronized void execute(long startDelay) {
-    // get the class id type outside of the job
-    // because with the job rule a search cannot be performed -> IllegalArgumentException: Attempted to beginRule
-    IType classId = TypeUtility.getType(IRuntimeClasses.ClassId);
-    if (TypeUtility.exists(classId)) {
-      Job.getJobManager().cancel(CLASS_ID_VALIDATION_JOB_FAMILY);
-      new ClassIdValidationJob(classId).schedule(startDelay);
-    }
+  public static synchronized void executeAsync(final long startDelay) {
+    new Job("schedule classid validation") {
+      @Override
+      protected IStatus run(IProgressMonitor monitor) {
+        // get the class id type outside of the validation job
+        // because with the job rule a search cannot be performed -> IllegalArgumentException: Attempted to beginRule
+        IType classId = TypeUtility.getType(IRuntimeClasses.ClassId);
+        if (TypeUtility.exists(classId)) {
+          Job.getJobManager().cancel(CLASS_ID_VALIDATION_JOB_FAMILY);
+          new ClassIdValidationJob(classId).schedule(startDelay);
+        }
+        return Status.OK_STATUS;
+      }
+    }.schedule();
   }
 
   private static final class P_SchedulingRule implements ISchedulingRule {
diff --git a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/internal/ScoutSdk.java b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/internal/ScoutSdk.java
index bbec9ca..dcdaa1e 100644
--- a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/internal/ScoutSdk.java
+++ b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/internal/ScoutSdk.java
@@ -51,7 +51,7 @@
 
     // start class id validation
     ClassIdValidationJob.install();
-    ClassIdValidationJob.execute(5000);
+    ClassIdValidationJob.executeAsync(5000);
 
     // DTO auto update
     m_autoUpdateManager = new DtoAutoUpdateManager();