Skip to content

Commit e6d5c5b

Browse files
Andrei-Pozolotincheeseng
authored andcommitted
provide isolated child classloader to address issue:
aspectj tests are not runnable due to wrong classloader setup #42 Conflicts: org.scala-ide.sdt.scalatest/src/scala/tools/eclipse/scalatest/launching/ScalaTestLauncher.scala Conflicts: org.scala-ide.sdt.scalatest/src/scala/tools/eclipse/scalatest/launching/ScalaTestLauncher.scala
1 parent a5a1727 commit e6d5c5b

File tree

2 files changed

+12
-9
lines changed

2 files changed

+12
-9
lines changed

.gitignore

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
2+
.project
3+
.settings/
4+
.classpath
5+
bin/
6+

org.scala-ide.sdt.scalatest/src/scala/tools/eclipse/scalatest/launching/ScalaTestLauncher.scala

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -46,13 +46,11 @@ object ScalaTestLauncher {
4646
try {
4747
val cpFilePath = args(0)
4848
val classpath = Source.fromFile(args(0)).getLines()
49-
50-
val loader = ClassLoader.getSystemClassLoader
51-
val method= classOf[URLClassLoader].getDeclaredMethod("addURL", classOf[URL]); //$NON-NLS-1$
52-
method.setAccessible(true);
53-
classpath.foreach(cp => method.invoke(loader, new File(cp.toString).toURI.toURL))
54-
55-
val runnerClass = Class.forName("org.scalatest.tools.Runner")
49+
50+
val urls = classpath.map { cp => new File(cp.toString).toURI.toURL }.toArray
51+
val loader = new URLClassLoader(urls, ClassLoader.getSystemClassLoader)
52+
53+
val runnerClass = loader.loadClass("org.scalatest.tools.Runner")
5654
val mainMethod = runnerClass.getMethod("main", args.getClass()) //$NON-NLS-1$
5755
mainMethod.setAccessible(true)
5856
mainMethod.invoke(null, Source.fromFile(args(1)).getLines().toArray)
@@ -67,5 +65,4 @@ object ScalaTestLauncher {
6765
argsFile.delete()
6866
}
6967
}
70-
71-
}
68+
}

0 commit comments

Comments
 (0)