diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fa51771 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ + +.project +.settings/ +.classpath +bin/ + diff --git a/org.scala-ide.sdt.scalatest/src/scala/tools/eclipse/scalatest/launching/ScalaTestLauncher.scala b/org.scala-ide.sdt.scalatest/src/scala/tools/eclipse/scalatest/launching/ScalaTestLauncher.scala index 6595b35..f5fdb91 100644 --- a/org.scala-ide.sdt.scalatest/src/scala/tools/eclipse/scalatest/launching/ScalaTestLauncher.scala +++ b/org.scala-ide.sdt.scalatest/src/scala/tools/eclipse/scalatest/launching/ScalaTestLauncher.scala @@ -46,13 +46,13 @@ object ScalaTestLauncher { try { val cpFilePath = args(0) val classpath = Source.fromFile(args(0)).getLines() - - val loader = ClassLoader.getSystemClassLoader - val method= classOf[URLClassLoader].getDeclaredMethod("addURL", classOf[URL]); //$NON-NLS-1$ - method.setAccessible(true); - classpath.foreach(cp => method.invoke(loader, new File(cp.toString).toURI.toURL)) - - val runnerClass = Class.forName("org.scalatest.tools.Runner") + + val urls = classpath.map { cp => new File(cp.toString).toURI.toURL }.toArray + val loader = new URLClassLoader(urls, ClassLoader.getSystemClassLoader) + + Thread.currentThread().setContextClassLoader(loader) + + val runnerClass = loader.loadClass("org.scalatest.tools.Runner") val mainMethod = runnerClass.getMethod("main", args.getClass()) //$NON-NLS-1$ mainMethod.setAccessible(true) mainMethod.invoke(null, Source.fromFile(args(1)).getLines().toArray)