我尝试使用注释和Velocity模板引擎关注java代码生成的this教程。 (我正在使用eclipse ee mars。)
在带注释的项目中,启用注释处理,并且处理器(作为导出的jar)包含在Factory Path中。处理器具有velocity
和velocity-tools
的依赖关系,因此我也将它们包含在Factory路径中(使用包含所有速度依赖关系的velocity-dep)。
问题是:当我包含velocity-dep-1.4.jar时,一切正常并且代码生成但是当我切换到时
任何其他版本(1.5或1.7)我收到错误The specified class for ResourceManager (org.apache.velocity.runtime.resource.ResourceManagerImpl) does not implement org.apache.velocity.runtime.resource.ResourceManager; Velocity is not initialized correctly.
在错误日志上。
我需要利用速度1.7来继续我的项目。
在三台不同的电脑上尝试过同样的结果。
我已经没有想法,任何帮助都会非常感激。
克隆这个github repo:
https://github.com/halx4/question.StackOverflow.velocity-template-engine-configuration-on-eclipse/tree/master
它包含2个eclipse项目,一个处理器和一个带注释的项目(客户端)。我已经包含了所有依赖项,并将它们作为非maven项目,以确保问题与maven无关。
确保:
processor project properties > java compiler > annotations processing > enable project specific settings
已启用processor project properties > java compiler > annotations processing > enable annotation processing
已启用processor project properties > java compiler > annotations processing > enable processing in Editor
已启用processor project properties > java compiler > annotations processing > Factory Path > Enable project specific settings
已启用processor project properties > java compiler > annotations processing > Factory Path > metainf-services-1.1.jar
已启用为包含JAR的注释处理器。
现在应该可以将处理器导出为(不可执行的)JAR。确保导出的JAR中包含beaninfo.vm
和velocity.properties
个文件。另外,通过在META-INF/services/javax.annotation.processing.Processor
菜单上选择Export all output folders fro checked projects
,确保文件JAR export
也已包含在JAR中。
导出的jar可以放在NoMavenClient项目的文件夹中。为方便起见,处理器的JAR(theProcessor.jar)已经放在这个文件夹中。window > show > error log
)以查看来自处理器的消息client project properties > java compiler > annotations processing > enable project specific settings
已启用client project properties > java compiler > annotations processing > enable annotation processing
已启用client project properties > java compiler > annotations processing > enable processing in Editor
已启用client project properties > java compiler > annotations processing > Factory Path > Enable project specific settings
已启用client project properties > java compiler > annotations processing > Factory Path > theProcessor.jar , velocity-tools-2.0.jar ,
velocity-1.7-dep.jar
已启用为包含JAR的注释处理器。在此阶段,点击Apply将调用处理器。在错误日志视图中,我看到“ResourceManager的指定类...”错误消息。
*但如果我在工厂路径中包含文件theProcessor.jar , velocity-tools-2.0.jar ,
velocity-dep-1.4.jar
并点击应用,我会收到错误日志“创建源文件...”,这意味着成功。
Factory Path
中声明,这与声明注释处理器的位置相同。 尽管如此,这个问题还没有得到回答,因为我最好在eclipse中找到一个解决方案,而不是在一个新的IDE中开发整个项目。 如果有人尝试我尝试解释的任何程序,并且会有不同的结果,请告诉我。
尽管如此,这个问题还没有得到回答,因为我最好在eclipse中找到一个解决方案,而不是在一个新的IDE中开发整个项目。
答案 0 :(得分:0)
我不是eclipse用户。但是当我看到这条消息时:
The specified class for ResourceManager(org.apache.velocity.runtime.resource.ResourceManagerImpl) does not implement org.apache.velocity.runtime.resource.ResourceManager; Velocity is not initialized correctly.
我立即想到版本不匹配。当你切换到1.5 ou 1.7时,某处仍然有一些1.4类或jar文件。
请确保在升级时清理整个项目并删除任何1.4依赖项。