Author: tfennelly
Date: 2010-01-14 09:42:10 -0500 (Thu, 14 Jan 2010)
New Revision: 19747
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/launch/SmooksLaunchConfigurationDelegate.java
Log:
https://jira.jboss.org/jira/browse/JBIDE-5680
SmooksLaunchConfigurationDelegate not able to see correct project classpath
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/launch/SmooksLaunchConfigurationDelegate.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/launch/SmooksLaunchConfigurationDelegate.java 2010-01-14
12:49:34 UTC (rev 19746)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/launch/SmooksLaunchConfigurationDelegate.java 2010-01-14
14:42:10 UTC (rev 19747)
@@ -22,12 +22,11 @@
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
-import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
-import java.io.PrintWriter;
-import java.io.StringWriter;
+import java.net.MalformedURLException;
import java.net.URL;
+import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -48,14 +47,12 @@
import org.eclipse.jdt.launching.IVMRunner;
import org.eclipse.jdt.launching.VMRunnerConfiguration;
import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.PlatformUI;
import org.jboss.tools.smooks.configuration.ProcessNodeType;
import org.jboss.tools.smooks.configuration.RuntimeDependency;
import org.jboss.tools.smooks.configuration.RuntimeMetadata;
-import org.jboss.tools.smooks.configuration.editors.uitls.ProjectClassLoader;
import org.jboss.tools.smooks.core.SmooksInputType;
import org.jboss.tools.smooks.launch.serialize.MarshallingStrategy;
import org.jboss.tools.smooks.launch.serialize.ObjectSerializer;
@@ -77,6 +74,7 @@
IJavaProject javaProject = getJavaProject(launchConfig);
IProject project = javaProject.getProject();
final String smooksConfigName =
launchConfig.getAttribute(IJavaLaunchConfigurationConstants.ATTR_MAIN_TYPE_NAME,
""); //$NON-NLS-1$
+ String[] baseClasspath = getClasspath(launchConfig);
final RuntimeMetadata launchMetadata = new RuntimeMetadata();
launchMetadata.setSmooksConfig(project.findMember(smooksConfigName));
@@ -86,7 +84,7 @@
return;
} else {
List<RuntimeDependency> dependencies = launchMetadata.getDependencies();
- ProjectClassLoader projectClassLoader = new ProjectClassLoader(javaProject);
+ URLClassLoader projectClassLoader = toURLClassLoader(baseClasspath);
for(RuntimeDependency dependency : dependencies) {
if(!dependency.isOnProjectClasspath(projectClassLoader)) {
@@ -97,7 +95,7 @@
}
IVMRunner runner= getVMRunner(launchConfig, mode);
- VMRunnerConfiguration runConfig = buildRunnerConfig(launchConfig);
+ VMRunnerConfiguration runConfig = buildRunnerConfig(launchConfig, baseClasspath);
// check for cancellation
if (monitor.isCanceled()) {
@@ -123,8 +121,8 @@
});
}
- private VMRunnerConfiguration buildRunnerConfig(ILaunchConfiguration launchConfig)
throws CoreException {
- List<String> classpath = new
ArrayList<String>(Arrays.asList(getClasspath(launchConfig)));
+ private VMRunnerConfiguration buildRunnerConfig(ILaunchConfiguration launchConfig,
String[] baseClasspath) throws CoreException {
+ List<String> classpath = new
ArrayList<String>(Arrays.asList(baseClasspath));
// We need to add the SmooksLauncher to the launch classpath because it will not be
part of the projects
// classpath. Bit of a hack... there's probably a nicer way of doing this!!!
@@ -244,4 +242,19 @@
return new FileOutputStream(resourceOutFile);
}
+
+ private URLClassLoader toURLClassLoader(String[] baseClasspath) {
+ URL[] classPathURLs = new URL[baseClasspath.length];
+
+ for(int i = 0; i < baseClasspath.length; i++) {
+ try {
+ File cpEntry = new File(baseClasspath[i]);
+ classPathURLs[i] = cpEntry.toURL();
+ } catch (MalformedURLException e) {
+ e.printStackTrace();
+ }
+ }
+
+ return new URLClassLoader(classPathURLs);
+ }
}