coder09 Δημοσ. 19 Ιανουαρίου 2022 Δημοσ. 19 Ιανουαρίου 2022 Hello Everyone, I am getting below error while I am learning Java Compiler API recently and I write some code with the help of online compiler that can compile one simple java source code file into a class file, but it can't compile a source code file which refer another class in other source code file. Below is my code: public static void main(String[] args) throws IOException { JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); Path path = Paths.get("demo/Test2.java"); File sourceFile = path.toFile(); // set compiler's classpath to be same as the runtime's String classpath = System.getProperty("java.class.path"); optionList.addAll(Arrays.asList("-classpath", classpath)); optionList = Arrays.asList("-d", "demo_class"); try (StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null)) { Iterable<? extends JavaFileObject> fileObjects = fileManager.getJavaFileObjects(sourceFile); JavaCompiler.CompilationTask task = compiler.getTask(null, null, null, options, null, fileObjects); Boolean result = task.call(); if (result == null || !result.booleanValue()) { throw new RuntimeException( "Compilation failed. class file path:" + sourceFile.getPath()); } } } demo/Test.java: public class Test1 {} demo/Test2.java: public class Test2 extends Test1{ public static void main(String[] args) { System.out.println("Test2 compiled."); } } output: demo/Test2.java:2: error: cannot find symbol public class Test2 extends Test1{ ^ symbol: class Test1 1 error Exception in thread "main" java.lang.RuntimeException: Compilation failed. class file path:demo/Test2.java at test.DynamicCompile.main(DynamicCompile.java:28) My question is how to make the compiler know class Test1 is in file Test1.java and this file is in the same source code folder as Test2.java so that it can compile recursively?
masteripper Δημοσ. 19 Ιανουαρίου 2022 Δημοσ. 19 Ιανουαρίου 2022 Have you checked this answer from SO :https://stackoverflow.com/questions/42905854/how-to-use-java-compiler-api-to-compile-java-files-recursively
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα