115 new TestClose().run(); 116 } 117 118 void run() throws IOException { 119 JavacTool tool = (JavacTool) ToolProvider.getSystemJavaCompiler(); 120 try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) { 121 122 File classes = new File("classes"); 123 classes.mkdirs(); 124 File extraClasses = new File("extraClasses"); 125 extraClasses.mkdirs(); 126 127 System.out.println("compiling classes to extraClasses"); 128 { // setup class in extraClasses 129 fm.setLocation(StandardLocation.CLASS_OUTPUT, 130 Collections.singleton(extraClasses)); 131 List<? extends JavaFileObject> files = Arrays.asList( 132 new MemFile("AnnoProc.java", annoProc), 133 new MemFile("Callback.java", callback)); 134 List<String> options = Arrays.asList( 135 "-XaddExports:jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED", 136 "-XaddExports:jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED", 137 "-XDaccessInternalAPI"); 138 JavacTask task = tool.getTask(null, fm, null, options, null, files); 139 check(task.call()); 140 } 141 142 System.out.println("compiling dummy to classes with anno processor"); 143 { // use that class in a TaskListener after processing has completed 144 PrintStream prev = System.out; 145 String out; 146 ByteArrayOutputStream baos = new ByteArrayOutputStream(); 147 try (PrintStream ps = new PrintStream(baos)) { 148 System.setOut(ps); 149 File testClasses = new File(System.getProperty("test.classes")); 150 fm.setLocation(StandardLocation.CLASS_OUTPUT, 151 Collections.singleton(classes)); 152 fm.setLocation(StandardLocation.ANNOTATION_PROCESSOR_PATH, 153 Arrays.asList(extraClasses, testClasses)); 154 List<? extends JavaFileObject> files = Arrays.asList( 155 new MemFile("my://dummy", "class Dummy { }")); 156 List<String> options = Arrays.asList("-XDaccessInternalAPI", "-processor", "AnnoProc"); | 115 new TestClose().run(); 116 } 117 118 void run() throws IOException { 119 JavacTool tool = (JavacTool) ToolProvider.getSystemJavaCompiler(); 120 try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) { 121 122 File classes = new File("classes"); 123 classes.mkdirs(); 124 File extraClasses = new File("extraClasses"); 125 extraClasses.mkdirs(); 126 127 System.out.println("compiling classes to extraClasses"); 128 { // setup class in extraClasses 129 fm.setLocation(StandardLocation.CLASS_OUTPUT, 130 Collections.singleton(extraClasses)); 131 List<? extends JavaFileObject> files = Arrays.asList( 132 new MemFile("AnnoProc.java", annoProc), 133 new MemFile("Callback.java", callback)); 134 List<String> options = Arrays.asList( 135 "--add-exports", "jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED", 136 "--add-exports", "jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED", 137 "-XDaccessInternalAPI"); 138 JavacTask task = tool.getTask(null, fm, null, options, null, files); 139 check(task.call()); 140 } 141 142 System.out.println("compiling dummy to classes with anno processor"); 143 { // use that class in a TaskListener after processing has completed 144 PrintStream prev = System.out; 145 String out; 146 ByteArrayOutputStream baos = new ByteArrayOutputStream(); 147 try (PrintStream ps = new PrintStream(baos)) { 148 System.setOut(ps); 149 File testClasses = new File(System.getProperty("test.classes")); 150 fm.setLocation(StandardLocation.CLASS_OUTPUT, 151 Collections.singleton(classes)); 152 fm.setLocation(StandardLocation.ANNOTATION_PROCESSOR_PATH, 153 Arrays.asList(extraClasses, testClasses)); 154 List<? extends JavaFileObject> files = Arrays.asList( 155 new MemFile("my://dummy", "class Dummy { }")); 156 List<String> options = Arrays.asList("-XDaccessInternalAPI", "-processor", "AnnoProc"); |