diff --git a/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/AntCorePlugin.java b/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/AntCorePlugin.java
index 8753da5..688018b 100644
--- a/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/AntCorePlugin.java
+++ b/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/AntCorePlugin.java
@@ -145,10 +145,10 @@
 		plugin = this;
 	}
 
-	/**
-	 * @see Plugin#shutdown()
+	/* (non-Javadoc)
+	 * @see org.eclipse.core.runtime.Plugin#shutdown()
 	 */
-	public void shutdown() throws CoreException {
+	public void shutdown() {
 		if (preferences == null) {
 			return;
 		}
diff --git a/ant/org.eclipse.ant.ui/Ant Editor/org/eclipse/ant/internal/ui/editor/outline/OutlinePreparingHandler.java b/ant/org.eclipse.ant.ui/Ant Editor/org/eclipse/ant/internal/ui/editor/outline/OutlinePreparingHandler.java
index fb571ba..5ecaa4b 100644
--- a/ant/org.eclipse.ant.ui/Ant Editor/org/eclipse/ant/internal/ui/editor/outline/OutlinePreparingHandler.java
+++ b/ant/org.eclipse.ant.ui/Ant Editor/org/eclipse/ant/internal/ui/editor/outline/OutlinePreparingHandler.java
@@ -372,8 +372,7 @@
     /* (non-Javadoc)
      * @see org.xml.sax.ContentHandler#endElement(String, String, String)
      */
-    public void endElement(String aUri, String aLocalName, String aQualifiedName)
-        throws SAXException {
+    public void endElement(String aUri, String aLocalName, String aQualifiedName) {
 
         String tempTagName = aLocalName.length() > 0 ? aLocalName : aQualifiedName;
         
@@ -415,7 +414,7 @@
     /*
      * @see org.xml.sax.ErrorHandler#warning(org.xml.sax.SAXParseException)
      */
-    public void warning(SAXParseException anException) throws SAXException {
+    public void warning(SAXParseException anException) {
 		if (errorHandler != null) {
 			XmlElement element= createProblemElement(anException);
 			errorHandler.warning(anException, element);
@@ -425,7 +424,7 @@
     /* (non-Javadoc)
      * @see org.xml.sax.ErrorHandler#error(SAXParseException)
      */
-    public void error(SAXParseException anException) throws SAXException {
+    public void error(SAXParseException anException) {
 		generateErrorElementHierarchy();
 		if (errorHandler != null) {
 			XmlElement errorElement= createProblemElement(anException);
@@ -439,7 +438,7 @@
      * 
      * @see org.xml.sax.ErrorHandler#fatalError(SAXParseException)
      */
-    public void fatalError(SAXParseException anException) throws SAXException {
+    public void fatalError(SAXParseException anException) {
 		generateErrorElementHierarchy();
 		if (errorHandler != null) {
 			XmlElement errorElement= createProblemElement(anException);
@@ -473,7 +472,7 @@
 	/**
 	 * @see org.xml.sax.EntityResolver#resolveEntity(java.lang.String, java.lang.String)
 	 */
-	public InputSource resolveEntity(String publicId, String systemId) throws SAXException {
+	public InputSource resolveEntity(String publicId, String systemId) {
 			int index= systemId.indexOf(':');
 			if (index > 0) {
 				//remove file:
@@ -498,7 +497,7 @@
 	/* (non-Javadoc)
 	 * @see org.xml.sax.ext.LexicalHandler#comment(char[], int, int)
 	 */
-	public void comment(char[] ch, int start, int length) throws SAXException {
+	public void comment(char[] ch, int start, int length) {
 		if (isInDTD || isExternal()) {
 			return;
 		}
@@ -513,20 +512,20 @@
 	/* (non-Javadoc)
 	 * @see org.xml.sax.ext.LexicalHandler#endCDATA()
 	 */
-	public void endCDATA() throws SAXException {
+	public void endCDATA() {
 	}
 
 	/* (non-Javadoc)
 	 * @see org.xml.sax.ext.LexicalHandler#endDTD()
 	 */
-	public void endDTD() throws SAXException {
+	public void endDTD() {
 		isInDTD= false;
 	}
 
 	/* (non-Javadoc)
 	 * @see org.xml.sax.ext.LexicalHandler#endEntity(java.lang.String)
 	 */
-	public void endEntity(String name) throws SAXException {
+	public void endEntity(String name) {
 		if (isInDTD) {
 			return;
 		}
@@ -544,13 +543,13 @@
 	/* (non-Javadoc)
 	 * @see org.xml.sax.ext.LexicalHandler#startCDATA()
 	 */
-	public void startCDATA() throws SAXException {
+	public void startCDATA() {
 	}
 
 	/* (non-Javadoc)
 	 * @see org.xml.sax.ext.LexicalHandler#startDTD(java.lang.String, java.lang.String, java.lang.String)
 	 */
-	public void startDTD(String name, String publicId, String systemId) throws SAXException {
+	public void startDTD(String name, String publicId, String systemId) {
 		isInDTD= true;
 	}
 
diff --git a/ant/org.eclipse.ant.ui/Ant Tools Support/org/eclipse/ant/internal/ui/launchConfigurations/AntProcess.java b/ant/org.eclipse.ant.ui/Ant Tools Support/org/eclipse/ant/internal/ui/launchConfigurations/AntProcess.java
index 2bb29e5..e3df754 100644
--- a/ant/org.eclipse.ant.ui/Ant Tools Support/org/eclipse/ant/internal/ui/launchConfigurations/AntProcess.java
+++ b/ant/org.eclipse.ant.ui/Ant Tools Support/org/eclipse/ant/internal/ui/launchConfigurations/AntProcess.java
@@ -17,7 +17,6 @@
 import org.eclipse.ant.internal.ui.model.IAntUIConstants;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.debug.core.DebugEvent;
-import org.eclipse.debug.core.DebugException;
 import org.eclipse.debug.core.DebugPlugin;
 import org.eclipse.debug.core.ILaunch;
 import org.eclipse.debug.core.model.IProcess;
@@ -92,7 +91,7 @@
 	/**
 	 * @see org.eclipse.debug.core.model.IProcess#getExitValue()
 	 */
-	public int getExitValue() throws DebugException {
+	public int getExitValue() {
 		return 0;
 	}
 
@@ -129,7 +128,7 @@
 	/**
 	 * @see org.eclipse.debug.core.model.ITerminate#terminate()
 	 */
-	public void terminate() throws DebugException {
+	public void terminate() {
 		setCanceled(true);
 	}
 
diff --git a/ant/org.eclipse.ant.ui/Ant Tools Support/org/eclipse/ant/internal/ui/launchConfigurations/AntStreamsProxy.java b/ant/org.eclipse.ant.ui/Ant Tools Support/org/eclipse/ant/internal/ui/launchConfigurations/AntStreamsProxy.java
index 17845c1..b433728 100644
--- a/ant/org.eclipse.ant.ui/Ant Tools Support/org/eclipse/ant/internal/ui/launchConfigurations/AntStreamsProxy.java
+++ b/ant/org.eclipse.ant.ui/Ant Tools Support/org/eclipse/ant/internal/ui/launchConfigurations/AntStreamsProxy.java
@@ -11,8 +11,6 @@
 package org.eclipse.ant.internal.ui.launchConfigurations;
 
 
-import java.io.IOException;
-
 import org.eclipse.ant.internal.ui.model.IAntUIConstants;
 import org.eclipse.debug.core.model.IStreamMonitor;
 import org.eclipse.debug.core.model.IStreamsProxy;
@@ -50,7 +48,7 @@
 	/**
 	 * @see org.eclipse.debug.core.model.IStreamsProxy#write(java.lang.String)
 	 */
-	public void write(String input) throws IOException {
+	public void write(String input) {
 	}
 
 	public IStreamMonitor getWarningStreamMonitor() {
diff --git a/ant/org.eclipse.ant.ui/Ant Tools Support/org/eclipse/ant/internal/ui/launchConfigurations/RunAntStatusHandler.java b/ant/org.eclipse.ant.ui/Ant Tools Support/org/eclipse/ant/internal/ui/launchConfigurations/RunAntStatusHandler.java
index a95cf4a..b903405 100644
--- a/ant/org.eclipse.ant.ui/Ant Tools Support/org/eclipse/ant/internal/ui/launchConfigurations/RunAntStatusHandler.java
+++ b/ant/org.eclipse.ant.ui/Ant Tools Support/org/eclipse/ant/internal/ui/launchConfigurations/RunAntStatusHandler.java
@@ -11,7 +11,6 @@
 package org.eclipse.ant.internal.ui.launchConfigurations;
 
 
-import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.debug.core.IStatusHandler;
 import org.eclipse.debug.ui.ILaunchConfigurationDialog;
@@ -25,7 +24,7 @@
 	/**
 	 * @see org.eclipse.debug.core.IStatusHandler#handleStatus(org.eclipse.core.runtime.IStatus, java.lang.Object)
 	 */
-	public Object handleStatus(IStatus status, Object source) throws CoreException {
+	public Object handleStatus(IStatus status, Object source) {
 		ILaunchConfigurationDialog dialog = (ILaunchConfigurationDialog)source;
 		dialog.setActiveTab(2);
 		return null;
diff --git a/ant/org.eclipse.ant.ui/Ant Tools Support/org/eclipse/ant/internal/ui/views/actions/RefreshBuildFilesAction.java b/ant/org.eclipse.ant.ui/Ant Tools Support/org/eclipse/ant/internal/ui/views/actions/RefreshBuildFilesAction.java
index 73c0741..5490cab 100644
--- a/ant/org.eclipse.ant.ui/Ant Tools Support/org/eclipse/ant/internal/ui/views/actions/RefreshBuildFilesAction.java
+++ b/ant/org.eclipse.ant.ui/Ant Tools Support/org/eclipse/ant/internal/ui/views/actions/RefreshBuildFilesAction.java
@@ -70,7 +70,7 @@
 		final ProgressMonitorDialog progressDialog= new ProgressMonitorDialog(Display.getDefault().getActiveShell());
 		try {
 			progressDialog.run(true, true, new IRunnableWithProgress() {
-				public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
+				public void run(IProgressMonitor monitor) {
 					monitor.beginTask(AntViewActionMessages.getString("RefreshBuildFilesAction.Refreshing_buildfiles_3"), projects.size()); //$NON-NLS-1$
 					ProjectNode project;
 					while (iter.hasNext()) {
diff --git a/ant/org.eclipse.ant.ui/Ant Tools Support/org/eclipse/ant/internal/ui/views/actions/SearchForBuildFilesAction.java b/ant/org.eclipse.ant.ui/Ant Tools Support/org/eclipse/ant/internal/ui/views/actions/SearchForBuildFilesAction.java
index 5333d2a..959cbb3 100644
--- a/ant/org.eclipse.ant.ui/Ant Tools Support/org/eclipse/ant/internal/ui/views/actions/SearchForBuildFilesAction.java
+++ b/ant/org.eclipse.ant.ui/Ant Tools Support/org/eclipse/ant/internal/ui/views/actions/SearchForBuildFilesAction.java
@@ -54,7 +54,7 @@
 			final ProjectNode[] existingProjects= view.getProjects();
 			try {
 				progressDialog.run(true, true, new IRunnableWithProgress() {
-					public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
+					public void run(IProgressMonitor monitor) {
 						monitor.beginTask(AntViewActionMessages.getString("SearchForBuildFilesAction.Processing_search_results_3"), files.length); //$NON-NLS-1$
 						for (int i = 0; i < files.length && !monitor.isCanceled(); i++) {
 							String buildFileName= files[i].getFullPath().toString();
diff --git a/ant/org.eclipse.ant.ui/Ant Tools Support/org/eclipse/ant/internal/ui/views/actions/SearchForBuildFilesDialog.java b/ant/org.eclipse.ant.ui/Ant Tools Support/org/eclipse/ant/internal/ui/views/actions/SearchForBuildFilesDialog.java
index bc0b79b..a8ad157 100644
--- a/ant/org.eclipse.ant.ui/Ant Tools Support/org/eclipse/ant/internal/ui/views/actions/SearchForBuildFilesDialog.java
+++ b/ant/org.eclipse.ant.ui/Ant Tools Support/org/eclipse/ant/internal/ui/views/actions/SearchForBuildFilesDialog.java
@@ -389,7 +389,7 @@
 		/**
 		 * @see org.eclipse.core.resources.IResourceProxyVisitor#visit(org.eclipse.core.resources.IResourceProxy)
 		 */
-		public boolean visit(IResourceProxy proxy) throws CoreException {
+		public boolean visit(IResourceProxy proxy) {
 			if (proxy.getType() == IResource.FILE) {
 				if (matcher.match(proxy.getName())) {
 					results.add(proxy.requestResource());
