fork download
  1.  
  2. import java.io.IOException;
  3. import java.nio.file.Paths;
  4. import java.net.URL;
  5. import java.net.URLClassLoader;
  6.  
  7. public class Main {
  8. public static void main(String[] args) throws IOException, InterruptedException {
  9. if(args.length == 0) {
  10. new ProcessBuilder(
  11. Paths.get(System.getProperty("java.home"), "bin", "java").toString(),
  12. "-cp", System.getProperty("java.class.path"),
  13. "-Djava.system.class.loader=" + DynamicClassLoader.class.getName(),
  14. Main.class.getName(), "sub-process"
  15. ).inheritIO().start().waitFor();
  16. return;
  17. }
  18. System.out.println("Java: " + Runtime.version());
  19. System.out.println("Main.main()");
  20. System.out.println("ClassLoader.getSystemClassLoader(): " + ClassLoader.getSystemClassLoader());
  21. }
  22.  
  23. public static final class DynamicClassLoader extends URLClassLoader {
  24. public DynamicClassLoader(URL[] urls, ClassLoader parent) {
  25. super(urls, parent);
  26. }
  27.  
  28. public DynamicClassLoader(String name, ClassLoader parent) {
  29. super(name, new URL[0], parent);
  30. }
  31.  
  32. public DynamicClassLoader(ClassLoader parent) {
  33. this("classpath", parent);
  34. }
  35.  
  36. public void addURL(URL url) {
  37. super.addURL(url);
  38. }
  39. }
  40. }
Success #stdin #stdout #stderr 0.26s 57048KB
stdin
Standard input is empty
stdout
Java: 12.0.1+12
Main.main()
ClassLoader.getSystemClassLoader(): Main$DynamicClassLoader@2ff4acd0
stderr
OpenJDK 64-Bit Server VM warning: Archived non-system classes are disabled because the java.system.class.loader property is specified (value = "Main$DynamicClassLoader"). To use archived non-system classes, this property must not be set