Не удалось запустить процессор аннотаций Java

У меня проблемы с запуском процессора аннотаций из командной строки. Проблема в том, что он работает в среде Windows, но не в моей установке Linux.

Мой процессор находится в файле jar (meta-validator.jar). Я также добавил запись в META-INF/services/javax.annotation.processing.Processor, содержащую полное имя класса моего процессора.

Я пытаюсь вызвать процессор аннотаций с помощью этой команды:

javac -cp "./metadata-validator.jar; ... (path to annotations.jar etc.)" -processor xammt.validator.modules.ValidatorModule -proc:only " ... path to sources" 

В среде Windows он просто работает (Windows 7 64bit Pro, JDK 1.7.xx), процессор находится и выполняется процессный метод.

В моей среде Linux (Linux Mint 13 32bit -> в основном Ubuntu 12.04, Oracle JDK 1.7) я получаю сообщение:

error: Annotation processor 'xammt.validator.modules.ValidatorModule' not found
warning: Annotation processing without compilation requested but no processors were found.

Также без переключателя -processor я получаю такое же предупреждение (с другими подробными вещами).

Что может быть причиной этой проблемы? Я предполагаю, что мой JDK на Linux-машине установлен правильно, потому что я могу без проблем запускать/компилировать java-приложения.

Спасибо за любой совет.

EDIT: я до сих пор понятия не имею, почему это не работает. Забавно, что это работает программно - мне удалось без проблем вызвать мой процессор аннотаций через Java Compiler API (на обеих платформах), это также лучшее решение из-за отладки.

EDIT2: Фактическая команда:

javac -cp "./metadata-validator.jar;./lib/common-library.jar;./Annotation source.jar" 
-processor xammt.validator.modules.ValidatorModule -proc:only "SourceFile.java"

РЕШЕНО: проверьте http://en.wikipedia.org/wiki/Classpath_%28Java%29#OS_specific_notes


person Brand88    schedule 16.12.2012    source источник


Ответы (2)


В Linux вы используете двоеточие вместо точки с запятой в качестве разделителя пути к классу? Включите также команду Linux, которую вы выполняете.

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

Нравится:

javac -cp "./metadata-validator.jar:./lib/common-library.jar:./Annotation source.jar" -processor xammt.validator.modules.ValidatorModule -proc:only "SourceFile.java"
person Jeff Putney    schedule 18.12.2012
comment
Если только проблема не в использовании неправильного разделителя пути. Если да, то это ответ. - person Jeff Putney; 18.12.2012
comment
Большое спасибо, я понятия не имел. - person Brand88; 19.12.2012
comment
ты только что спас мне жизнь - person dieend; 16.01.2014

Я также обнаружил, что версия OpenJDK 7, включенная в Debian Wheezy (7u3), просто не работает с обработчиками аннотаций. Я сделал специальную сборку OpenJDK 7u9 (из Ubuntu Quantal), и она отлично работает.

Я сообщил об ошибке в системе отслеживания ошибок Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=697658

person Ricardo Pardini    schedule 08.01.2013