2012-10-12 3 views
0

내 주석 프로세서에서 Velocity Escape 도구를 사용하는 데 문제가 있습니다. 무엇보다도, 나는 Annotation 프로세서가 속도만으로 잘 작동하므로 설정이 정확하다는 것을 알고 있습니다. 나는 문자를 사용하여 문자열을 사용할 때 생성 된 소스에 문제가 있기 시작했습니다. 그래서 저는 인터넷으로 가서 Velocity에 대해 EscapeTool을 발견했습니다. 문서가 구성에 대해별로 좋지 않다고 말할 수 있습니다.Java의 Velocity EscapeTool

ToolManager velocityToolManager = new ToolManager(); 
velocityToolManager.configure("velocity-tools.xml"); 
VelocityContext vc = 
      new VelocityContext(velocityToolManager.createContext()); 

을하지만 구성 부분에서 다음과 같은 오류를 받고 있어요 :

java.lang.RuntimeException: There was an error while parsing the InputStream 
    at org.apache.velocity.tools.config.XmlFactoryConfiguration.read(XmlFactoryConfiguration.java:132) 
    at org.apache.velocity.tools.config.FileFactoryConfiguration.read(FileFactoryConfiguration.java:140) 
    at org.apache.velocity.tools.config.FileFactoryConfiguration.read(FileFactoryConfiguration.java:116) 
    at org.apache.velocity.tools.config.FileFactoryConfiguration.read(FileFactoryConfiguration.java:91) 
    at org.apache.velocity.tools.config.FileFactoryConfiguration.read(FileFactoryConfiguration.java:69) 
    at org.apache.velocity.tools.config.FileFactoryConfiguration.read(FileFactoryConfiguration.java:59) 
    at org.apache.velocity.tools.config.ConfigurationUtils.getDefaultTools(ConfigurationUtils.java:79) 
    at org.apache.velocity.tools.config.ConfigurationUtils.getAutoLoaded(ConfigurationUtils.java:176) 
    at org.apache.velocity.tools.ToolManager.autoConfigure(ToolManager.java:74) 
    at org.apache.velocity.tools.ToolManager.<init>(ToolManager.java:68) 
    at org.apache.velocity.tools.ToolManager.<init>(ToolManager.java:54) 
    at games.jwrestling.core.annotation.processor.CardAnnotationProcessor.process(CardAnnotationProcessor.java:116) 
    at com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:793) 
    at com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:722) 
    at com.sun.tools.javac.processing.JavacProcessingEnvironment.access$1700(JavacProcessingEnvironment.java:97) 
    at com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1029) 
    at com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1163) 
    at com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1108) 
    at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:824) 
    at com.sun.tools.javac.main.Main.compile(Main.java:439) 
    at com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:132) 
    at org.bsc.maven.plugin.processor.AbstractAnnotationProcessorMojo.executeWithExceptionsHandled(AbstractAnnotationProcessorMojo.java:424) 
    at org.bsc.maven.plugin.processor.AbstractAnnotationProcessorMojo.execute(AbstractAnnotationProcessorMojo.java:250) 
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) 
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84) 
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59) 
    at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) 
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161) 
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320) 
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) 
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537) 
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196) 
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:141) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:601) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352) 
Caused by: org.xml.sax.SAXParseException; lineNumber: 23; columnNumber: 58; Error at line 23 char 58: org.apache.velocity.tools.config.Data 
    at org.apache.commons.digester.Digester.createSAXException(Digester.java:3181) 
    at org.apache.commons.digester.Digester.createSAXException(Digester.java:3207) 
    at org.apache.commons.digester.Digester.startElement(Digester.java:1456) 
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:506) 
    at com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:182) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:1303) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2717) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:607) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:489) 
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:835) 
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764) 
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:123) 
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1210) 
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:568) 
    at org.apache.commons.digester.Digester.parse(Digester.java:1765) 
    at org.apache.velocity.tools.config.XmlFactoryConfiguration.read(XmlFactoryConfiguration.java:128) 
    ... 43 more 
Caused by: java.lang.ClassNotFoundException: org.apache.velocity.tools.config.Data 
    at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50) 
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:244) 
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:230) 
    at org.apache.commons.digester.ObjectCreateRule.begin(ObjectCreateRule.java:205) 
    at org.apache.commons.digester.Rule.begin(Rule.java:175) 
    at org.apache.commons.digester.Digester.startElement(Digester.java:1453) 
    ... 56 more 

나는 나를 시작하려면 위치를 기억하지 않는, 몇 가지 코드를 발견 할 수 있었다 종속성 문제라고 생각했지만 의존성은 다음과 같습니다.

 <dependency> 
      <groupId>org.apache.velocity</groupId> 
      <artifactId>velocity</artifactId> 
      <version>1.7</version> 
      <type>jar</type> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.velocity</groupId> 
      <artifactId>velocity-tools</artifactId> 
      <version>2.0</version> 
     </dependency> 

org.apache.ve locity.tools.config.Data는 velocity-tools jar에 포함되어 있습니다.

코드 here (repo에 댓글을 달았 음)을 찾을 수 있습니다.

소스가 유용 할 경우 https://[email protected]/javydreamercsw/jwrestling에서 체크 아웃 할 수 있습니다.

어떤 도움도 환영합니다!

업데이트 : 여기 속도-tools.xml의 내용, 속도 공구 단지 내에있는 하나의 사본입니다

<tools> 
    <data type="number" key="TOOLS_VERSION" value="2.0"/> 
    <data type="boolean" key="GENERIC_TOOLS_AVAILABLE" value="true"/> 
    <toolbox scope="application"> 
     <tool class="org.apache.velocity.tools.generic.AlternatorTool"/> 
     <tool class="org.apache.velocity.tools.generic.DisplayTool"/> 
     <tool class="org.apache.velocity.tools.generic.MathTool"/> 
     <tool class="org.apache.velocity.tools.generic.NumberTool"/> 
     <tool class="org.apache.velocity.tools.generic.ComparisonDateTool"/> 
     <tool class="org.apache.velocity.tools.generic.ClassTool"/> 
     <tool class="org.apache.velocity.tools.generic.ConversionTool"/> 
     <tool class="org.apache.velocity.tools.generic.EscapeTool"/> 
     <tool class="org.apache.velocity.tools.generic.FieldTool"/> 
     <tool class="org.apache.velocity.tools.generic.ListTool"/> 
     <tool class="org.apache.velocity.tools.generic.ResourceTool"/> 
     <tool class="org.apache.velocity.tools.generic.SortTool"/> 
    </toolbox> 
    <toolbox scope="request"> 
     <tool class="org.apache.velocity.tools.generic.LoopTool"/> 
     <tool class="org.apache.velocity.tools.generic.ContextTool"/> 
     <tool class="org.apache.velocity.tools.generic.LinkTool"/> 
     <tool class="org.apache.velocity.tools.generic.RenderTool"/> 
    </toolbox> 
</tools> 
+0

나는이 문제를 "Maven"또는 "Classpath issue"로 태그해야한다고 생각한다. 나는 Valocity 자체와 함께해야 할 일이 있다고 생각하지 않는다. 우리는 거의 같은 의존성을 가지고 있습니다. –

+0

btw : 우리는 속도 도구를 "활성화"하기 위해 추가 코딩을하지 않았습니다. –

+0

특별한 구성없이 시도해보고 어떻게 진행되는지 살펴 보겠습니다. – javydreamercsw

답변

0

시도

new ToolManager(false,false) 
1
XmlFactoryConfiguration factoryConfiguration = new XmlFactoryConfiguration("Default Tools"); 
     try { 
      factoryConfiguration.read(new FileInputStream(new File(Thread.currentThread().getContextClassLoader().getResource("/").getFile(), TOOL_BOX_CONF_FILE))); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     ToolboxFactory factory = factoryConfiguration.createFactory(); 
     factory.configure(factoryConfiguration); 
     toolContext = new ToolContext(); 
     for (String scope : Scope.values()) { 
      toolContext.addToolbox(factory.createToolbox(scope)); 
     } 
+0

다른 독자에게 더 유용하도록 간단하게 답을 설명하십시오. –