У меня есть проект Acceleo (куча файлов * .mtl и класс Java, который может генерировать выходные данные с использованием этих шаблонов). Проект работает прекрасно до тех пор, как я запустить его в Eclipse, но когда я скомпилировать * .emtl файлы с помощью Maven я получаю NullPointerException в AcceleoService#doGenerate()
:NPE работает генератор Acceleo
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$
}
So getType()
null
. Так как это работает в Eclipse, но не тогда, когда здание с Maven, я сравнить при сгенерированных *.emtl
файлах и обнаружил, что файл *.emtl
, который работает имеет в верхних
<input>
<takesTypesFrom href="http://mycompany.com/xyz#/"/>
</input>
в то время как один, который не работает имеет
<input/>
Поскольку NPE был вызван getType()
, возвращающим null
, это выглядело как возможная причина, но это насколько мне удалось.
Любые идеи относительно того, что может быть неправильным здесь?