2012-02-07 2 views
2

Я пытаюсь использовать JavaCompiler для компиляции исходного кода.JavaCompiler classPath

class A{int i;}; 
class B extends A{i = 5;}; 

Проблема заключается в том, даже если они находятся в той же папке, При компиляции класса B, JavaCompiler все еще не может найти класс А.

Итак, мне интересно, проблема в том, что я не добавить путь к папке classPath.

Я не знаю, как это сделать в java-коде, поэтому не дал ему выстрела.

Спасибо за любую помощь.

+1

Хм, не уверен, но, вероятно, это потому, что у вашего кода есть ошибка. Вы не пишете такие вещи, как 'class B extends A {i = 5;}', используйте блок init (или лучше, конструктор) для установки значения элемента: 'class B extends A {{i = 5;}} ; ' – rlegendi

+0

*« Я не знаю, как это сделать в Java-коде, так что не сделал этого выстрела ». * Это не повод не читать точное руководство. -1 –

+0

Я печатаю это неправильно ... aioobe дает правильное решение. Я должен добавить аргумент -cp в java-компилятор. – RobinBattle

ответ

0

продлить путь к классам текущего directoy.

Вы можете сделать это через параметр -classpath или переменную CLASSPATH.

-claspath=. 

или

CLASSPATH=. 
+2

Он, по-видимому, ссылается на * class * 'JavaCompiler'. – aioobe

1

другая точка зрения будет генерировать непосредственно в байт-код, используя один из известных инструментов для такой задачи, как ASM, JavaAssist, SERP или любой другой ..... Это может быть очень хороший способ избежать: - проблемы с траекторией - иметь более тонкий контроль над процессом (если у вас есть ошибки javac, вам будет необходимо проанализировать поток, чтобы поднять его в ваше приложение) - улучшить производительность всего процесса

Но это добавляет некоторую сложность ... Как часто это компромисс

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