У меня есть проект Acceleo (набор файлов *.mtl и класс Java, который может генерировать выходные данные с использованием этих шаблонов). Проект работает нормально, пока я запускаю его из Eclipse, но когда я компилирую файлы *.emtl с помощью Maven, я получаю исключение NullPointerException внутри AcceleoService#doGenerate()
:
Thread [ModalContext] (Suspended (exception NullPointerException))
AcceleoService.doGenerate(Module, String, EObject, List<Object>, File, Monitor) line: 565
Plugin(AbstractAcceleoGenerator).generate(Monitor) line: 194
Plugin(AbstractAcceleoGenerator).doGenerate(Monitor) line: 159
Plugin.doGenerate(Monitor) line: 211
Plugin.main(String[]) line: 168
NewRPCServiceDefinitionWizard.generatePluginXml(IProgressMonitor) line: 450
NewRPCServiceDefinitionWizard.generateCode(IProgressMonitor) line: 269
NewRPCServiceDefinitionWizard.access$2(NewRPCServiceDefinitionWizard, IProgressMonitor) line: 231
NewRPCServiceDefinitionWizard$3$1.runInWorkspace(IProgressMonitor) line: 315
NewRPCServiceDefinitionWizard$3.run(IProgressMonitor) line: 321
ModalContext$ModalContextThread.run() line: 121
Рассматриваемый код выглядит следующим образом:
for (Template template : mainTemplates) {
// Calls the template with each potential arguments
final EClassifier argumentType = template.getParameter().get(0).getType();
// !!! argumentType is null here !!!
if (argumentType.eIsProxy()) {
throw new AcceleoEvaluationException(AcceleoEngineMessages.getString(
"AcceleoService.TypeIsProxy", templateName)); //$NON-NLS-1$
}
Итак, getType()
возвращает null
. Поскольку это работает внутри Eclipse, но не при сборке с помощью Maven, я сравнил сгенерированные файлы *.emtl
и обнаружил, что файл *.emtl
, который работает, находится вверху
<input>
<takesTypesFrom href="http://mycompany.com/xyz#/"/>
</input>
в то время как тот, который не работает, имеет
<input/>
Поскольку NPE был запущен getType()
, возвращающим null
, это выглядело как возможная причина, но это все, что мне удалось выяснить.
Любые идеи относительно того, что здесь может быть не так?