2015-12-13 3 views
1

Я пытаюсь скомпилировать некоторый код с помощью Javax.tools.javacompiler, однако каждый раз, когда компилятор не считает, что интерфейсы, используемые классом, не являются частью пути к классам.javax JavaCompiler classpath issues

интерфейсы являются частью приложения, вызывающего компилятор, и я попытался добавить .jar файл в путь к классам для JavaCompiler, как так:

optionList.add(System.getProperty("java.class.path") + ";" + f.getAbsolutePath()); 

JavaCompiler.CompilationTask task = compiler.getTask(null, fileManager, diagnostics, optionList, null, 
       compilationUnits); 

Ошибки я получаю являются так :

plugins\Ping.java:6: error: cannot find symbol 
public class Ping extends BaseRoute { 
         ^

И куча больше вещей, вызванных им, не находит суперкласс.

Я убедился, что файл «f» правильно определен в режиме отладки, так что это не проблема. Я также попытался добавить его в classpath через io.asecta.restdb.* (мой пакет), но это также не сработало.

Заранее благодарим за помощь.

+0

Определить «попытался добавить его в путь к классам через' io.asecta.restdb. * '(Мой пакет)». – EJP

ответ

0

Если вы компилируете из своего собственного файла jar, java.class.path уже должен содержать ваш файл jar, поэтому нет необходимости добавлять его снова через f.getAbsolutePath(), это не повредит, но isn ' t необходимо. Код выглядит совершенно нормально для меня. Вы уверены, что в коде, который вы компилируете, вы импортировали этот класс «BaseRoute»?

Смежные вопросы