diff --git a/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/console/MavenConsoleImpl.java b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/console/MavenConsoleImpl.java
index a64e014..94a7c4b 100644
--- a/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/console/MavenConsoleImpl.java
+++ b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/console/MavenConsoleImpl.java
@@ -14,13 +14,12 @@
 package org.eclipse.m2e.core.ui.internal.console;
 
 import java.io.IOException;
+import java.text.DateFormat;
 import java.util.Date;
 import java.util.List;
+import java.util.Locale;
 import java.util.concurrent.CopyOnWriteArrayList;
 
-import com.ibm.icu.text.DateFormat;
-import com.ibm.icu.util.ULocale;
-
 import org.eclipse.jface.preference.JFacePreferences;
 import org.eclipse.jface.resource.ColorRegistry;
 import org.eclipse.jface.resource.ImageDescriptor;
@@ -245,7 +244,7 @@
   }
 
   private DateFormat getDateFormat() {
-    return DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.LONG, ULocale.getDefault());
+    return DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.LONG, Locale.getDefault());
   }
 
   // MavenConsole
diff --git a/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/wizards/MavenPomSelectionComponent.java b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/wizards/MavenPomSelectionComponent.java
index 1e914f4..76165a1 100644
--- a/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/wizards/MavenPomSelectionComponent.java
+++ b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/wizards/MavenPomSelectionComponent.java
@@ -13,6 +13,7 @@
 
 package org.eclipse.m2e.core.ui.internal.wizards;
 
+import java.text.DateFormat;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashSet;
@@ -21,8 +22,6 @@
 import java.util.Map;
 import java.util.Set;
 
-import com.ibm.icu.text.DateFormat;
-
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
diff --git a/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/wizards/MavenProjectWizardArchetypeParametersPage.java b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/wizards/MavenProjectWizardArchetypeParametersPage.java
index 9d217fc..db0017b 100644
--- a/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/wizards/MavenProjectWizardArchetypeParametersPage.java
+++ b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/wizards/MavenProjectWizardArchetypeParametersPage.java
@@ -26,8 +26,6 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.ibm.icu.lang.UCharacter;
-
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
@@ -620,7 +618,7 @@
         isFirst = false;
       } else {
         if(isFirst) {
-          if(UCharacter.isJavaIdentifierStart(c)) {
+          if(Character.isJavaIdentifierStart(c)) {
             pkg.append(c);
             isFirst = false;
           }
@@ -628,7 +626,7 @@
           if(c == '.') {
             pkg.append('.');
             isFirst = true;
-          } else if(UCharacter.isJavaIdentifierPart(c)) {
+          } else if(Character.isJavaIdentifierPart(c)) {
             pkg.append(c);
           }
         }
diff --git a/org.eclipse.m2e.launching/META-INF/MANIFEST.MF b/org.eclipse.m2e.launching/META-INF/MANIFEST.MF
index 271f914..7065ccd 100644
--- a/org.eclipse.m2e.launching/META-INF/MANIFEST.MF
+++ b/org.eclipse.m2e.launching/META-INF/MANIFEST.MF
@@ -19,7 +19,6 @@
  org.eclipse.jdt.debug.ui,
  org.eclipse.m2e.maven.runtime;bundle-version="[1.15.0,1.16.0)",
  org.eclipse.m2e.core;bundle-version="[1.15.0,1.16.0)",
- com.ibm.icu;bundle-version="4.0.1",
  org.eclipse.m2e.core.ui;bundle-version="[1.15.0,1.16.0)",
  org.eclipse.jdt.debug,
  org.eclipse.core.resources,
diff --git a/org.eclipse.m2e.model.edit/META-INF/MANIFEST.MF b/org.eclipse.m2e.model.edit/META-INF/MANIFEST.MF
index 27b1d72..ece1760 100644
--- a/org.eclipse.m2e.model.edit/META-INF/MANIFEST.MF
+++ b/org.eclipse.m2e.model.edit/META-INF/MANIFEST.MF
@@ -13,8 +13,7 @@
  org.eclipse.emf.ecore.edit;visibility:=reexport,
  org.eclipse.wst.common.emf;visibility:=reexport,
  org.eclipse.wst.sse.core;visibility:=reexport,
- org.eclipse.wst.xml.core;visibility:=reexport,
- com.ibm.icu;bundle-version="4.0.1"
+ org.eclipse.wst.xml.core;visibility:=reexport
 Bundle-ActivationPolicy: lazy
 Export-Package: org.eclipse.m2e.model.edit.pom;x-internal:=true,
  org.eclipse.m2e.model.edit.pom.impl;x-internal:=true,
diff --git a/org.eclipse.m2e.model.edit/src/main/java/org/eclipse/m2e/model/edit/pom/translators/TranslatorAdapter.java b/org.eclipse.m2e.model.edit/src/main/java/org/eclipse/m2e/model/edit/pom/translators/TranslatorAdapter.java
index 9aa1c54..697ec56 100644
--- a/org.eclipse.m2e.model.edit/src/main/java/org/eclipse/m2e/model/edit/pom/translators/TranslatorAdapter.java
+++ b/org.eclipse.m2e.model.edit/src/main/java/org/eclipse/m2e/model/edit/pom/translators/TranslatorAdapter.java
@@ -18,8 +18,6 @@
 import org.w3c.dom.NodeList;
 import org.w3c.dom.Text;
 
-import com.ibm.icu.lang.UCharacter;
-
 import org.eclipse.jface.text.BadLocationException;
 import org.eclipse.wst.sse.core.internal.provisional.INodeAdapter;
 import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
@@ -292,7 +290,7 @@
       } catch(BadLocationException ble) {
         // We check for bad locations so this should not happen
       }
-      if(UCharacter.isWhitespace(c)) {
+      if(Character.isWhitespace(c)) {
         i-- ;
       }
 
@@ -342,7 +340,7 @@
       } catch(BadLocationException e) {
         // We check for bad locations so this should not happen
       }
-      if(UCharacter.isWhitespace(c) && !(c == '\r' || c == '\n')) {
+      if(Character.isWhitespace(c) && !(c == '\r' || c == '\n')) {
         builder.insert(0, c);
         i-- ;
       } else {
