Как скомпилировать Java-класс с JCI? - PullRequest
0 голосов
/ 22 февраля 2011

кто-то я использую это:

org.apache.commons.jci.compilers.JavacJavaCompiler

У меня есть класс jci:

public void compile() {
    sourceDir = new File("java");
    sources = new String[] { "test/HelloWorld.java" };
    target = new File("result");

    JavacJavaCompilerSettings settings = new JavacJavaCompilerSettings();

    JavacJavaCompiler javacJavaCompiler = new JavacJavaCompiler(settings);

    System.out.println("compile -> " + sources);
    System.out.println("compile -> " + sourceDir);
    System.out.println("compile -> " + target);

    CompilationResult result = javacJavaCompiler.compile(sources,
            new FileResourceReader(sourceDir),
            new FileResourceStore(target));

    for (CompilationProblem cp : result.getErrors()) {
        System.out.println("compile -> " + cp.getStartLine());
        System.out.println("compile -> " + cp.getMessage());
    }
}

и мой вывод:

 compile -> 0
 compile -> Failure executing javac, but could not parse the error: javac: file not found:     test/HelloWorld.java
 Usage: javac <options> <source files>
 use -help for a list of possible options

какая-то идея, ты.

1 Ответ

1 голос
/ 22 февраля 2011

Вывод ясно говорит вам, что компилятор не может найти ваш исходный файл с указанным вами путем. На ум приходят две возможные причины:

  • вы указали неправильный путь к исходному файлу или
  • «текущий каталог» JVM, а не каталог, содержащий каталог «test», используемый в имени пути источника.

Что попробовать:

  • Используйте абсолютный путь к исходному файлу, чтобы доказать, что вы можете запустить компилятор.
  • Распечатайте значение System.getProperty("user.dir") ..., которое должно соответствовать текущему каталогу JVM. Исходя из этого, выясните, каким должен быть относительный путь к исходному файлу .
...