我有一个Acceleo项目(一堆* .mtl文件和一个可以使用这些模板生成输出的Java类)。该项目只要我在Eclipse中运行它工作正常,但是当我编译使用Maven的* .emtl文件,我得到一个NullPointerException内AcceleoService#doGenerate()
:运行Acceleo生成器的NPE
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
触发,这看起来像是一个可能的原因,但这是我设法来的。
任何想法可能是错误的吗?