(original) (raw)

import java.io.*; import java.nio.file.*; import java.util.*; import java.util.spi.*; public class Test { public static void main(String... args) throws IOException { new Test().run(); } void run() throws IOException { String[] pkgs = { "", "package p;" }; String[] imports = {"", "import java.io.*;", "import q.*;" }; String[] types = { "", "public class C { }" }; for (String pkg : pkgs) { for (String imp : imports ) { for (String typ : types ) { test(pkg, imp, typ); } } } } void test(String pkg, String imp, String typ) throws IOException { String s = pkg + " " + imp + " " + typ; System.err.println("Test " + s); String n = s.replaceAll("[^a-z]+", "_"); Path dir = Path.of("tmp").resolve(n); Path src = dir.resolve("src"); Path ma = Files.createDirectories(src.resolve("ma")); Files.write(ma.resolve("module-info.java"), List.of("module ma { requires mb; }")); Path ma_p = Files.createDirectories(ma.resolve("p")); Files.write(ma_p.resolve("C.java"), List.of(s)); Path mb = Files.createDirectories(src.resolve("mb")); Files.write(mb.resolve("module-info.java"), List.of("module mb { exports q; }")); Path mb_q = Files.createDirectories(mb.resolve("q")); Files.write(mb_q.resolve("D.java"), List.of("package q; public class D { }")); ToolProvider javac = ToolProvider.findFirst("javac").orElseThrow(Error::new); int rc = javac.run(System.out, System.out, "--module-source-path", src.toString(), "-d", dir.resolve("modules").toString(), "--module", "ma,mb"); System.out.println("rc: " + rc); System.out.println(); } }