# HG changeset patch # Parent 6b93b126e4799c0ccc50f458706057d8b182ec0c diff -r 6b93b126e479 make/build.xml --- a/make/build.xml Tue Dec 27 21:10:06 2016 +0300 +++ b/make/build.xml Wed Dec 28 04:37:22 2016 +0300 @@ -143,7 +143,7 @@ - + diff -r 6b93b126e479 src/share/classes/com/sun/javatest/regtest/agent/MainActionHelper.java --- a/src/share/classes/com/sun/javatest/regtest/agent/MainActionHelper.java Tue Dec 27 21:10:06 2016 +0300 +++ b/src/share/classes/com/sun/javatest/regtest/agent/MainActionHelper.java Wed Dec 28 04:37:22 2016 +0300 @@ -25,7 +25,11 @@ package com.sun.javatest.regtest.agent; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.File; +import java.io.IOException; +import java.io.InputStream; import java.io.PrintStream; import java.io.PrintWriter; import java.lang.reflect.InvocationTargetException; @@ -33,6 +37,7 @@ import java.net.MalformedURLException; import java.net.URL; import java.net.URLClassLoader; +import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -54,7 +59,7 @@ Set addExports, Set addOpens, SearchPath classpath, - String classname, + final String classname, String[] classArgs, int timeout, OutputHandler outputHandler) { @@ -88,7 +93,41 @@ } catch (MalformedURLException e) { } } - loader = new URLClassLoader(urls.toArray(new URL[urls.size()])); + loader = new URLClassLoader(urls.toArray(new URL[urls.size()])) { + // we can get rid of it when TestNGRunner and the like are removed from junit.jar + public final Class loadClass(String name, boolean resolve) + throws ClassNotFoundException { + if (name.equals(classname) || name.startsWith(classname + "$")) { + // loaded that class and its inner classes by this loader, not by its parents + // inner classes are needed for classes like TestNGRunner$RegressionListener + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + try { + String resource = name.replace('.', '/') + ".class"; + InputStream is = this.getResourceAsStream(resource); + try { + byte[] buffer = new byte[1024]; + int n; + while ((n = is.read(buffer)) != -1) { + baos.write(buffer, 0, n); + } + + } finally { + is.close(); + } + } catch (IOException ie) { + throw new ClassNotFoundException(name, ie); + } + byte[] code = baos.toByteArray(); + Class result = defineClass(name, code, 0, code.length); + if (resolve) { + resolveClass(result); + } + return result; + } else { + return super.loadClass(name, resolve); + } + } + }; ModuleHelper.addExports(addExports, loader); ModuleHelper.addOpens(addOpens, loader); c = loader.loadClass(classname); diff -r 6b93b126e479 src/share/classes/com/sun/javatest/regtest/exec/MainAction.java --- a/src/share/classes/com/sun/javatest/regtest/exec/MainAction.java Tue Dec 27 21:10:06 2016 +0300 +++ b/src/share/classes/com/sun/javatest/regtest/exec/MainAction.java Wed Dec 28 04:37:22 2016 +0300 @@ -556,8 +556,8 @@ List stdLibs = new SearchPath() .append(script.getJavaTestClassPath()) .append(jdk.getJDKClassPath()) - .append(script.getJUnitPath()) - .append(script.getTestNGPath()) + //.append(script.getJUnitPath()) + //.append(script.getTestNGPath()) .asList(); SearchPath classpath = paths.get(PathKind.CLASSPATH);