开发者

Cannot initialize Velocity engine in an apt processor class

I am trying to use Velocity in an apt annotation processing class (with Maven). On initializing Velocity

Properties vProps = new Properties();
vProps.load(this.getClass().getResourceAsStream("velocity.properties"));
mEngine = new VelocityEngine(vProps);

with the following velocity.properties

runtime.log.logsystem.class=org.apache.velocity.runtime.log.NullLogChute

resource.loader=class
class.resource.loader.class=org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader
class.resource.loader.path=.

Here is the apt debug trace

[INFO] Processing 35 source files
[DEBUG] Invoking apt with arguments:
[DEBUG]   -classpath
[DEBUG]   D:\personal\depot\maven2\com\mycompany\portal\portal-annotations\1.0\portal-annotations-1.0.jar开发者_Python百科;D:\personal\depot\maven2\org\apache\velocity\velocity\1.7\velocity-1.7.jar;D:\personal\depot\maven2\commons-collections\commons-collections\3.2.1\commons-collections-3.2.1.jar;D:\personal\depot\maven2\commons-lang\commons-lang\2.4\commons-lang-2.4.jar;D:\personal\depot\maven2\org\codehaus\plexus\plexus-utils\1.4.6\plexus-utils-1.4.6.jar;D:\personal\depot\maven2\org\codehaus\plexus\plexus-compiler-api\1.5.2\plexus-compiler-api-1.5.2.jar;D:\personal\depot\maven2\asm\asm\3.2\asm-3.2.jar;D:\personal\depot\maven2\asm\asm-commons\3.2\asm-commons-3.2.jar;D:\personal\depot\maven2\asm\asm-tree\3.2\asm-tree-3.2.jar;D:\personal\workspaces\portal-pm\emc-disk-arrays\target\classes;D:\personal\depot\maven2\com\mycompany\library\wbem-client\1.0\wbem-client-1.0.jar;D:\personal\app\java\bmc_jdk1.5.0_10\jre\..\lib\tools.jar
[DEBUG]   -sourcepath
[DEBUG]   D:\personal\workspaces\portal-pm\emc-disk-arrays\src\main\java
[DEBUG]   -d
[DEBUG]   D:\personal\workspaces\portal-pm\emc-disk-arrays\target\generated-resources\apt
[DEBUG]   -nowarn
[DEBUG]   -encoding
[DEBUG]   ISO-8859-1
[DEBUG]   -verbose
[DEBUG]   -s
[DEBUG]   D:\personal\workspaces\portal-pm\emc-disk-arrays\target\generated-sources\apt
[DEBUG]   -nocompile
[DEBUG]   -factory
[DEBUG]   com.mycompany.portal.annotation.processing.MyAnnotationProcessorFactory

I have got the following error

[WARNING] Problem encountered during annotation processing; 
[WARNING] see stacktrace below for more information.
[WARNING] org.apache.velocity.exception.VelocityException: Error initializing log: Failed to initialize an instance of org.apache.velocity.runtime.log.NullLogChute with the current runtime configuration.
[WARNING]   at org.apache.velocity.runtime.RuntimeInstance.initializeLog(RuntimeInstance.java:875)
[WARNING]   at org.apache.velocity.runtime.RuntimeInstance.init(RuntimeInstance.java:262)
[WARNING]   at org.apache.velocity.app.VelocityEngine.init(VelocityEngine.java:93)
[WARNING]   at com.mycompany.portal.annotation.template.engine.Engine.<init>(Engine.java:26)
[WARNING]   at com.mycompany.portal.annotation.processing.MyAnnotationProcessor.createGeneratedFile(MyAnnotationProcessor.java:106)
[WARNING]   at com.mycompany.portal.annotation.processing.MyAnnotationProcessor.createGeneratedContent(MyAnnotationProcessor.java:95)
[WARNING]   at com.mycompany.portal.annotation.processing.MyAnnotationProcessor.process(MyAnnotationProcessor.java:75)
[WARNING]   at com.sun.mirror.apt.AnnotationProcessors$CompositeAnnotationProcessor.process(AnnotationProcessors.java:60)
[WARNING]   at com.sun.tools.apt.comp.Apt.main(Unknown Source)
[WARNING]   at com.sun.tools.apt.main.JavaCompiler.compile(Unknown Source)
[WARNING]   at com.sun.tools.apt.main.Main.compile(Unknown Source)
[WARNING]   at com.sun.tools.apt.main.Main.compile(Unknown Source)
[WARNING]   at com.sun.tools.apt.Main.processing(Unknown Source)
[WARNING]   at com.sun.tools.apt.Main.process(Unknown Source)
[WARNING]   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[WARNING]   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
[WARNING]   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[WARNING]   at java.lang.reflect.Method.invoke(Method.java:585)
[WARNING]   at org.codehaus.mojo.apt.AptUtils.invoke(AptUtils.java:114)
[WARNING]   at org.codehaus.mojo.apt.AbstractAptMojo.executeApt(AbstractAptMojo.java:389)
[WARNING]   at org.codehaus.mojo.apt.AbstractAptMojo.executeImpl(AbstractAptMojo.java:263)
[WARNING]   at org.codehaus.mojo.apt.AbstractAptMojo.execute(AbstractAptMojo.java:240)
[WARNING]   at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
[WARNING]   at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
[WARNING]   at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
[WARNING]   at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
[WARNING]   at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
[WARNING]   at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
[WARNING]   at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
[WARNING]   at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
[WARNING]   at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:319)
[WARNING]   at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
[WARNING]   at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
[WARNING]   at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
[WARNING]   at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
[WARNING]   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[WARNING]   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
[WARNING]   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[WARNING]   at java.lang.reflect.Method.invoke(Method.java:585)
[WARNING]   at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
[WARNING]   at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
[WARNING]   at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
[WARNING]   at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
[WARNING] Caused by: org.apache.velocity.exception.VelocityException: Failed to initialize an instance of org.apache.velocity.runtime.log.NullLogChute with the current runtime configuration.
[WARNING]   at org.apache.velocity.runtime.log.LogManager.createLogChute(LogManager.java:220)
[WARNING]   at org.apache.velocity.runtime.log.LogManager.updateLog(LogManager.java:269)
[WARNING]   at org.apache.velocity.runtime.RuntimeInstance.initializeLog(RuntimeInstance.java:871)
[WARNING]   ... 42 more
[WARNING] Caused by: org.apache.velocity.exception.VelocityException: The specified logger class org.apache.velocity.runtime.log.NullLogChute does not implement the org.apache.velocity.runtime.log.LogChute interface.
[WARNING]   at org.apache.velocity.runtime.log.LogManager.createLogChute(LogManager.java:181)
[WARNING]   ... 44 more
[DEBUG] Apt returned 4

But when I create a simple main method on a test class and launch it with eclipse, the engine initialize well and I don't have any error.

I put some additional information,

the maven pom.xml build section

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>apt-maven-plugin</artifactId>
  <version>1.0-alpha-4</version>
  <executions>
    <execution>
      <goals>
        <goal>process</goal>
      </goals>
    </execution>
  </executions>
  <configuration>
    <verbose>true</verbose>
    <factory>com.mycompany.portal.annotation.processing.MyAnnotationProcessorFactory</factory>
  </configuration>
  <dependencies>
    <dependency>
      <!-- The maven artifact containing the Engine class -->
      <groupId>com.mycompany.portal</groupId>
      <artifactId>portal-annotations</artifactId>
      <version>1.0</version>
    </dependency>
    <dependency>
      <groupId>org.apache.velocity</groupId>
      <artifactId>velocity</artifactId>
      <version>1.7</version>
    </dependency>
  </dependencies>
</plugin>

I also try to follow in eclipse debug mode the execution and it appears that the

private static LogChute createLogChute(RuntimeServices rsvc) throws Exception

method do not consider org.apache.velocity.runtime.log.NullLogChute as an instance of LogChute interface (LogManager.class line 155 the test is false) and throw the VelocityException

Is Velocity compatible with maven and apt-maven-plugin ?


Your problem is that maven itself uses velocity and you get version conflicts.

I just resolved this for the maven-jxr-plugin. Have a look at the pom.xml in the source of that to see what versions of which components to use.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜