From c6f341903f5ef61d56ec97c4ad56d09f19b546fe Mon Sep 17 00:00:00 2001 From: xuzho Date: Wed, 11 Oct 2017 16:15:39 +0800 Subject: [PATCH 1/5] resolve main class automatically Signed-off-by: xuzho --- .../META-INF/MANIFEST.MF | 3 +- com.microsoft.java.debug.plugin/plugin.xml | 1 + com.microsoft.java.debug.plugin/pom.xml | 5 + .../JavaDebugDelegateCommandHandler.java | 5 + .../internal/ResolveMainClassHandler.java | 126 ++++++++++++++++++ 5 files changed, 139 insertions(+), 1 deletion(-) create mode 100644 com.microsoft.java.debug.plugin/src/main/java/com/microsoft/java/debug/plugin/internal/ResolveMainClassHandler.java diff --git a/com.microsoft.java.debug.plugin/META-INF/MANIFEST.MF b/com.microsoft.java.debug.plugin/META-INF/MANIFEST.MF index 69c462bb8..0bac05a13 100644 --- a/com.microsoft.java.debug.plugin/META-INF/MANIFEST.MF +++ b/com.microsoft.java.debug.plugin/META-INF/MANIFEST.MF @@ -20,5 +20,6 @@ Bundle-ClassPath: lib/gson-2.7.jar, lib/reactive-streams-1.0.0.jar, lib/com.microsoft.java.debug.core-0.1.0.jar, lib/commons-io-2.5.jar, - lib/commons-lang3-3.6.jar + lib/commons-lang3-3.6.jar, + lib/dom4j-1.6.1.jar diff --git a/com.microsoft.java.debug.plugin/plugin.xml b/com.microsoft.java.debug.plugin/plugin.xml index 5ab528c46..3e2e9e544 100644 --- a/com.microsoft.java.debug.plugin/plugin.xml +++ b/com.microsoft.java.debug.plugin/plugin.xml @@ -5,6 +5,7 @@ + diff --git a/com.microsoft.java.debug.plugin/pom.xml b/com.microsoft.java.debug.plugin/pom.xml index 696eb783a..4bf9972a0 100644 --- a/com.microsoft.java.debug.plugin/pom.xml +++ b/com.microsoft.java.debug.plugin/pom.xml @@ -57,6 +57,11 @@ com.microsoft.java.debug.core 0.1.0 + + dom4j + dom4j + 1.6.1 + diff --git a/com.microsoft.java.debug.plugin/src/main/java/com/microsoft/java/debug/plugin/internal/JavaDebugDelegateCommandHandler.java b/com.microsoft.java.debug.plugin/src/main/java/com/microsoft/java/debug/plugin/internal/JavaDebugDelegateCommandHandler.java index f563111d8..abab3122d 100644 --- a/com.microsoft.java.debug.plugin/src/main/java/com/microsoft/java/debug/plugin/internal/JavaDebugDelegateCommandHandler.java +++ b/com.microsoft.java.debug.plugin/src/main/java/com/microsoft/java/debug/plugin/internal/JavaDebugDelegateCommandHandler.java @@ -26,6 +26,8 @@ public class JavaDebugDelegateCommandHandler implements IDelegateCommandHandler public static String RESOLVE_CLASSPATH = "vscode.java.resolveClasspath"; + public static String RESOLVE_MAINCLASS = "vscode.java.resolveMainClass"; + public static String BUILD_WORKSPACE = "vscode.java.buildWorkspace"; public static String CONFIG_LOG_LEVEL = "vscode.java.configLogLevel"; @@ -40,6 +42,9 @@ public Object executeCommand(String commandId, List arguments, IProgress } else if (RESOLVE_CLASSPATH.equals(commandId)) { ResolveClasspathsHandler handler = new ResolveClasspathsHandler(); return handler.resolveClasspaths(arguments); + } else if (RESOLVE_MAINCLASS.equals(commandId)) { + ResolveMainClassHandler handler = new ResolveMainClassHandler(); + return handler.resolveMainClass(arguments); } else if (BUILD_WORKSPACE.equals(commandId)) { // TODO } else if (FETCH_USER_DATA.equals(commandId)) { diff --git a/com.microsoft.java.debug.plugin/src/main/java/com/microsoft/java/debug/plugin/internal/ResolveMainClassHandler.java b/com.microsoft.java.debug.plugin/src/main/java/com/microsoft/java/debug/plugin/internal/ResolveMainClassHandler.java new file mode 100644 index 000000000..634f624bc --- /dev/null +++ b/com.microsoft.java.debug.plugin/src/main/java/com/microsoft/java/debug/plugin/internal/ResolveMainClassHandler.java @@ -0,0 +1,126 @@ +/******************************************************************************* + * Copyright (c) 2017 Microsoft Corporation 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 + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Microsoft Corporation - initial API and implementation + *******************************************************************************/ + +package com.microsoft.java.debug.plugin.internal; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +import org.dom4j.Document; +import org.dom4j.DocumentException; +import org.dom4j.Element; +import org.dom4j.io.SAXReader; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IWorkspaceRoot; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.jdt.core.IJavaProject; +import org.eclipse.jdt.core.IMethod; +import org.eclipse.jdt.core.JavaCore; +import org.eclipse.jdt.core.JavaModelException; +import org.eclipse.jdt.core.search.IJavaSearchConstants; +import org.eclipse.jdt.core.search.IJavaSearchScope; +import org.eclipse.jdt.core.search.SearchEngine; +import org.eclipse.jdt.core.search.SearchMatch; +import org.eclipse.jdt.core.search.SearchParticipant; +import org.eclipse.jdt.core.search.SearchPattern; +import org.eclipse.jdt.core.search.SearchRequestor; + +public class ResolveMainClassHandler { + /** + * resolve main class and project name if not specified. + * @param arguments a list of arguments including project files and project name + * @return main class and project name + * @throws CoreException when there are error when resolving main class. + */ + public String[] resolveMainClass(List arguments) throws CoreException { + List projectNames; + if (arguments.size() > 1 && arguments.get(1) != null) { + // project name specified + projectNames = new ArrayList(); + projectNames.add((String) arguments.get(1)); + } else { + List projectFiles = (List) arguments.get(0); + projectNames = resolveProjectName(projectFiles); + } + String[] res = {null, null}; + for (String projectName : projectNames) { + String mainClass = resolveMainClassCore(projectName); + if (mainClass != null) { + res[0] = mainClass; + res[1] = projectName; + return res; + } + } + return res; + } + + private List resolveProjectName(List projectFiles) { + List projects = new ArrayList<>(); + for (String f : projectFiles) { + SAXReader reader = new SAXReader(); + Document document; + try { + document = reader.read(new File(f)); + Element rootElm = document.getRootElement(); + projects.add(rootElm.elementText("name")); + } catch (DocumentException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + projects.add(null); + return projects; + } + + private String resolveMainClassCore(String projectName) throws CoreException { + IJavaSearchScope searchScope = createSearchScope(projectName); + SearchPattern pattern = SearchPattern.createPattern("main(String[]) void", IJavaSearchConstants.METHOD, + IJavaSearchConstants.DECLARATIONS, SearchPattern.R_CASE_SENSITIVE | SearchPattern.R_EXACT_MATCH); + ArrayList uris = new ArrayList(); + SearchRequestor requestor = new SearchRequestor() { + @Override + public void acceptSearchMatch(SearchMatch match) { + Object element = match.getElement(); + if (element instanceof IMethod) { + IMethod method = (IMethod) element; + try { + if (method.isMainMethod()) { + uris.add(method.getDeclaringType().getFullyQualifiedName()); + } + } catch (JavaModelException e) { + // ignore + } + } + } + }; + SearchEngine searchEngine = new SearchEngine(); + searchEngine.search(pattern, new SearchParticipant[] {SearchEngine.getDefaultSearchParticipant()}, + searchScope, requestor, null /* progress monitor */); + return uris.size() == 0 ? null : uris.get(0); + } + + private IJavaSearchScope createSearchScope(String projectName) throws CoreException { + IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); + if (projectName == null) { + return SearchEngine.createWorkspaceScope(); + } + IProject project = root.getProject(projectName); + if (!project.exists() || !project.isNatureEnabled("org.eclipse.jdt.core.javanature")) { + return SearchEngine.createWorkspaceScope(); + } + + IJavaProject javaProject = JavaCore.create(project); + return SearchEngine.createJavaSearchScope(new IJavaProject[] {javaProject}, + IJavaSearchScope.SOURCES | IJavaSearchScope.APPLICATION_LIBRARIES | IJavaSearchScope.SYSTEM_LIBRARIES); + } +} From b6e6128d72318b13eaeb72d31032a6e7580e30ab Mon Sep 17 00:00:00 2001 From: xuzho Date: Thu, 12 Oct 2017 10:32:25 +0800 Subject: [PATCH 2/5] resolve comments Signed-off-by: xuzho --- .../plugin/internal/ResolveMainClassHandler.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/com.microsoft.java.debug.plugin/src/main/java/com/microsoft/java/debug/plugin/internal/ResolveMainClassHandler.java b/com.microsoft.java.debug.plugin/src/main/java/com/microsoft/java/debug/plugin/internal/ResolveMainClassHandler.java index 634f624bc..4923bead2 100644 --- a/com.microsoft.java.debug.plugin/src/main/java/com/microsoft/java/debug/plugin/internal/ResolveMainClassHandler.java +++ b/com.microsoft.java.debug.plugin/src/main/java/com/microsoft/java/debug/plugin/internal/ResolveMainClassHandler.java @@ -14,6 +14,8 @@ import java.io.File; import java.util.ArrayList; import java.util.List; +import java.util.logging.Level; +import java.util.logging.Logger; import org.dom4j.Document; import org.dom4j.DocumentException; @@ -35,7 +37,11 @@ import org.eclipse.jdt.core.search.SearchPattern; import org.eclipse.jdt.core.search.SearchRequestor; +import com.microsoft.java.debug.core.Configuration; + public class ResolveMainClassHandler { + private static final Logger logger = Logger.getLogger(Configuration.LOGGER_NAME); + /** * resolve main class and project name if not specified. * @param arguments a list of arguments including project files and project name @@ -46,7 +52,7 @@ public String[] resolveMainClass(List arguments) throws CoreException { List projectNames; if (arguments.size() > 1 && arguments.get(1) != null) { // project name specified - projectNames = new ArrayList(); + projectNames = new ArrayList<>(); projectNames.add((String) arguments.get(1)); } else { List projectFiles = (List) arguments.get(0); @@ -74,8 +80,7 @@ private List resolveProjectName(List projectFiles) { Element rootElm = document.getRootElement(); projects.add(rootElm.elementText("name")); } catch (DocumentException e) { - // TODO Auto-generated catch block - e.printStackTrace(); + logger.log(Level.WARNING, String.format("Exception on reading project file: %s.", f), e); } } projects.add(null); @@ -86,7 +91,7 @@ private String resolveMainClassCore(String projectName) throws CoreException { IJavaSearchScope searchScope = createSearchScope(projectName); SearchPattern pattern = SearchPattern.createPattern("main(String[]) void", IJavaSearchConstants.METHOD, IJavaSearchConstants.DECLARATIONS, SearchPattern.R_CASE_SENSITIVE | SearchPattern.R_EXACT_MATCH); - ArrayList uris = new ArrayList(); + ArrayList uris = new ArrayList<>(); SearchRequestor requestor = new SearchRequestor() { @Override public void acceptSearchMatch(SearchMatch match) { From 7afe90b312548a8e1a9c3122b3ffc11828fe2196 Mon Sep 17 00:00:00 2001 From: xuzho Date: Tue, 17 Oct 2017 17:59:38 +0800 Subject: [PATCH 3/5] update: return all the main class in the workspace Signed-off-by: xuzho --- .../JavaDebugDelegateCommandHandler.java | 2 +- .../internal/ResolveMainClassHandler.java | 107 +++++++----------- 2 files changed, 43 insertions(+), 66 deletions(-) diff --git a/com.microsoft.java.debug.plugin/src/main/java/com/microsoft/java/debug/plugin/internal/JavaDebugDelegateCommandHandler.java b/com.microsoft.java.debug.plugin/src/main/java/com/microsoft/java/debug/plugin/internal/JavaDebugDelegateCommandHandler.java index abab3122d..b254e8d55 100644 --- a/com.microsoft.java.debug.plugin/src/main/java/com/microsoft/java/debug/plugin/internal/JavaDebugDelegateCommandHandler.java +++ b/com.microsoft.java.debug.plugin/src/main/java/com/microsoft/java/debug/plugin/internal/JavaDebugDelegateCommandHandler.java @@ -44,7 +44,7 @@ public Object executeCommand(String commandId, List arguments, IProgress return handler.resolveClasspaths(arguments); } else if (RESOLVE_MAINCLASS.equals(commandId)) { ResolveMainClassHandler handler = new ResolveMainClassHandler(); - return handler.resolveMainClass(arguments); + return handler.resolveMainClass(); } else if (BUILD_WORKSPACE.equals(commandId)) { // TODO } else if (FETCH_USER_DATA.equals(commandId)) { diff --git a/com.microsoft.java.debug.plugin/src/main/java/com/microsoft/java/debug/plugin/internal/ResolveMainClassHandler.java b/com.microsoft.java.debug.plugin/src/main/java/com/microsoft/java/debug/plugin/internal/ResolveMainClassHandler.java index 4923bead2..f6020a8de 100644 --- a/com.microsoft.java.debug.plugin/src/main/java/com/microsoft/java/debug/plugin/internal/ResolveMainClassHandler.java +++ b/com.microsoft.java.debug.plugin/src/main/java/com/microsoft/java/debug/plugin/internal/ResolveMainClassHandler.java @@ -11,23 +11,15 @@ package com.microsoft.java.debug.plugin.internal; -import java.io.File; import java.util.ArrayList; import java.util.List; -import java.util.logging.Level; import java.util.logging.Logger; +import java.util.stream.Collectors; -import org.dom4j.Document; -import org.dom4j.DocumentException; -import org.dom4j.Element; -import org.dom4j.io.SAXReader; import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IWorkspaceRoot; -import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; -import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jdt.core.IMethod; -import org.eclipse.jdt.core.JavaCore; import org.eclipse.jdt.core.JavaModelException; import org.eclipse.jdt.core.search.IJavaSearchConstants; import org.eclipse.jdt.core.search.IJavaSearchScope; @@ -36,6 +28,7 @@ import org.eclipse.jdt.core.search.SearchParticipant; import org.eclipse.jdt.core.search.SearchPattern; import org.eclipse.jdt.core.search.SearchRequestor; +import org.eclipse.jdt.ls.core.internal.managers.ProjectsManager; import com.microsoft.java.debug.core.Configuration; @@ -43,55 +36,19 @@ public class ResolveMainClassHandler { private static final Logger logger = Logger.getLogger(Configuration.LOGGER_NAME); /** - * resolve main class and project name if not specified. - * @param arguments a list of arguments including project files and project name - * @return main class and project name + * resolve main class and project name. + * @return an array of main class and project name * @throws CoreException when there are error when resolving main class. */ - public String[] resolveMainClass(List arguments) throws CoreException { - List projectNames; - if (arguments.size() > 1 && arguments.get(1) != null) { - // project name specified - projectNames = new ArrayList<>(); - projectNames.add((String) arguments.get(1)); - } else { - List projectFiles = (List) arguments.get(0); - projectNames = resolveProjectName(projectFiles); - } - String[] res = {null, null}; - for (String projectName : projectNames) { - String mainClass = resolveMainClassCore(projectName); - if (mainClass != null) { - res[0] = mainClass; - res[1] = projectName; - return res; - } - } - return res; - } - - private List resolveProjectName(List projectFiles) { - List projects = new ArrayList<>(); - for (String f : projectFiles) { - SAXReader reader = new SAXReader(); - Document document; - try { - document = reader.read(new File(f)); - Element rootElm = document.getRootElement(); - projects.add(rootElm.elementText("name")); - } catch (DocumentException e) { - logger.log(Level.WARNING, String.format("Exception on reading project file: %s.", f), e); - } - } - projects.add(null); - return projects; + public Object resolveMainClass() throws CoreException { + return resolveMainClassCore(); } - private String resolveMainClassCore(String projectName) throws CoreException { - IJavaSearchScope searchScope = createSearchScope(projectName); + private List resolveMainClassCore() throws CoreException { + IJavaSearchScope searchScope = SearchEngine.createWorkspaceScope(); SearchPattern pattern = SearchPattern.createPattern("main(String[]) void", IJavaSearchConstants.METHOD, IJavaSearchConstants.DECLARATIONS, SearchPattern.R_CASE_SENSITIVE | SearchPattern.R_EXACT_MATCH); - ArrayList uris = new ArrayList<>(); + ArrayList uris = new ArrayList<>(); SearchRequestor requestor = new SearchRequestor() { @Override public void acceptSearchMatch(SearchMatch match) { @@ -100,7 +57,15 @@ public void acceptSearchMatch(SearchMatch match) { IMethod method = (IMethod) element; try { if (method.isMainMethod()) { - uris.add(method.getDeclaringType().getFullyQualifiedName()); + IResource resource = method.getResource(); + if (resource != null) { + IProject project = resource.getProject(); + if (project != null) { + String mainClass = method.getDeclaringType().getFullyQualifiedName(); + String projectName = ProjectsManager.DEFAULT_PROJECT_NAME.equals(project.getName()) ? null : project.getName(); + uris.add(new ResolutionItem(mainClass, projectName)); + } + } } } catch (JavaModelException e) { // ignore @@ -111,21 +76,33 @@ public void acceptSearchMatch(SearchMatch match) { SearchEngine searchEngine = new SearchEngine(); searchEngine.search(pattern, new SearchParticipant[] {SearchEngine.getDefaultSearchParticipant()}, searchScope, requestor, null /* progress monitor */); - return uris.size() == 0 ? null : uris.get(0); + return uris.stream().distinct().collect(Collectors.toList()); } - private IJavaSearchScope createSearchScope(String projectName) throws CoreException { - IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); - if (projectName == null) { - return SearchEngine.createWorkspaceScope(); + private class ResolutionItem { + private String mainClass; + private String projectName; + + public ResolutionItem(String mainClass, String projectName) { + this.mainClass = mainClass; + this.projectName = projectName; } - IProject project = root.getProject(projectName); - if (!project.exists() || !project.isNatureEnabled("org.eclipse.jdt.core.javanature")) { - return SearchEngine.createWorkspaceScope(); + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o instanceof ResolutionItem) { + ResolutionItem item = (ResolutionItem) o; + return item.mainClass == this.mainClass && item.projectName == this.projectName; + } + return false; } - IJavaProject javaProject = JavaCore.create(project); - return SearchEngine.createJavaSearchScope(new IJavaProject[] {javaProject}, - IJavaSearchScope.SOURCES | IJavaSearchScope.APPLICATION_LIBRARIES | IJavaSearchScope.SYSTEM_LIBRARIES); + @Override + public int hashCode() { + return mainClass.hashCode() * 13 + (projectName == null ? 0 : projectName.hashCode()); + } } } From 815ec31a34cdc87d606496281e6936c293134e62 Mon Sep 17 00:00:00 2001 From: xuzho Date: Wed, 18 Oct 2017 13:56:30 +0800 Subject: [PATCH 4/5] resolve comments Signed-off-by: xuzho --- .../internal/ResolveMainClassHandler.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/com.microsoft.java.debug.plugin/src/main/java/com/microsoft/java/debug/plugin/internal/ResolveMainClassHandler.java b/com.microsoft.java.debug.plugin/src/main/java/com/microsoft/java/debug/plugin/internal/ResolveMainClassHandler.java index f6020a8de..271866633 100644 --- a/com.microsoft.java.debug.plugin/src/main/java/com/microsoft/java/debug/plugin/internal/ResolveMainClassHandler.java +++ b/com.microsoft.java.debug.plugin/src/main/java/com/microsoft/java/debug/plugin/internal/ResolveMainClassHandler.java @@ -38,7 +38,7 @@ public class ResolveMainClassHandler { /** * resolve main class and project name. * @return an array of main class and project name - * @throws CoreException when there are error when resolving main class. + * @throws CoreException when there are errors when resolving main class. */ public Object resolveMainClass() throws CoreException { return resolveMainClassCore(); @@ -48,7 +48,7 @@ private List resolveMainClassCore() throws CoreException { IJavaSearchScope searchScope = SearchEngine.createWorkspaceScope(); SearchPattern pattern = SearchPattern.createPattern("main(String[]) void", IJavaSearchConstants.METHOD, IJavaSearchConstants.DECLARATIONS, SearchPattern.R_CASE_SENSITIVE | SearchPattern.R_EXACT_MATCH); - ArrayList uris = new ArrayList<>(); + ArrayList res = new ArrayList<>(); SearchRequestor requestor = new SearchRequestor() { @Override public void acceptSearchMatch(SearchMatch match) { @@ -63,7 +63,7 @@ public void acceptSearchMatch(SearchMatch match) { if (project != null) { String mainClass = method.getDeclaringType().getFullyQualifiedName(); String projectName = ProjectsManager.DEFAULT_PROJECT_NAME.equals(project.getName()) ? null : project.getName(); - uris.add(new ResolutionItem(mainClass, projectName)); + res.add(new ResolutionItem(mainClass, projectName)); } } } @@ -76,7 +76,7 @@ public void acceptSearchMatch(SearchMatch match) { SearchEngine searchEngine = new SearchEngine(); searchEngine.search(pattern, new SearchParticipant[] {SearchEngine.getDefaultSearchParticipant()}, searchScope, requestor, null /* progress monitor */); - return uris.stream().distinct().collect(Collectors.toList()); + return res.stream().distinct().collect(Collectors.toList()); } private class ResolutionItem { @@ -95,14 +95,20 @@ public boolean equals(Object o) { } if (o instanceof ResolutionItem) { ResolutionItem item = (ResolutionItem) o; - return item.mainClass == this.mainClass && item.projectName == this.projectName; + if (mainClass != null ? !mainClass.equals(item.mainClass) : item.mainClass != null) { + return false; + } + if (projectName != null ? !projectName.equals(item.projectName) : item.projectName != null) { + return false; + } + return true; } return false; } @Override public int hashCode() { - return mainClass.hashCode() * 13 + (projectName == null ? 0 : projectName.hashCode()); + return (mainClass == null ? 0 : mainClass.hashCode()) * 13 + (projectName == null ? 0 : projectName.hashCode()); } } } From 15706ceef7dcba4740c384361f0c57592932a0f0 Mon Sep 17 00:00:00 2001 From: xuzho Date: Wed, 18 Oct 2017 15:43:09 +0800 Subject: [PATCH 5/5] remove unnecessary dependency Signed-off-by: xuzho --- com.microsoft.java.debug.plugin/META-INF/MANIFEST.MF | 3 +-- com.microsoft.java.debug.plugin/pom.xml | 5 ----- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/com.microsoft.java.debug.plugin/META-INF/MANIFEST.MF b/com.microsoft.java.debug.plugin/META-INF/MANIFEST.MF index 0bac05a13..69c462bb8 100644 --- a/com.microsoft.java.debug.plugin/META-INF/MANIFEST.MF +++ b/com.microsoft.java.debug.plugin/META-INF/MANIFEST.MF @@ -20,6 +20,5 @@ Bundle-ClassPath: lib/gson-2.7.jar, lib/reactive-streams-1.0.0.jar, lib/com.microsoft.java.debug.core-0.1.0.jar, lib/commons-io-2.5.jar, - lib/commons-lang3-3.6.jar, - lib/dom4j-1.6.1.jar + lib/commons-lang3-3.6.jar diff --git a/com.microsoft.java.debug.plugin/pom.xml b/com.microsoft.java.debug.plugin/pom.xml index 4bf9972a0..696eb783a 100644 --- a/com.microsoft.java.debug.plugin/pom.xml +++ b/com.microsoft.java.debug.plugin/pom.xml @@ -57,11 +57,6 @@ com.microsoft.java.debug.core 0.1.0 - - dom4j - dom4j - 1.6.1 -