Java中的Velocity EscapeTool
我在注释处理器上使用Velocity Escape工具时遇到问题。首先,我让注释处理器单独与velocity一起工作,因此我知道设置是正确的。当使用带有scape字符的字符串时,我开始对创建的源代码产生问题。所以我上网找到了关于Velocity的信息。让我们只说文档对配置不是很好 我找到了一些代码,不记得从哪里开始:Java中的Velocity EscapeTool,java,maven,configuration,classpath,velocity,Java,Maven,Configuration,Classpath,Velocity,我在注释处理器上使用Velocity Escape工具时遇到问题。首先,我让注释处理器单独与velocity一起工作,因此我知道设置是正确的。当使用带有scape字符的字符串时,我开始对创建的源代码产生问题。所以我上网找到了关于Velocity的信息。让我们只说文档对配置不是很好 我找到了一些代码,不记得从哪里开始: ToolManager velocityToolManager = new ToolManager(); velocityToolManager.configure("veloci
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
java.lang.RuntimeException:解析InputStream时出错
位于org.apache.velocity.tools.config.XmlFactoryConfiguration.read(XmlFactoryConfiguration.java:132)
位于org.apache.velocity.tools.config.FileFactoryConfiguration.read(FileFactoryConfiguration.java:140)
位于org.apache.velocity.tools.config.FileFactoryConfiguration.read(FileFactoryConfiguration.java:116)
位于org.apache.velocity.tools.config.FileFactoryConfiguration.read(FileFactoryConfiguration.java:91)
位于org.apache.velocity.tools.config.FileFactoryConfiguration.read(FileFactoryConfiguration.java:69)
位于org.apache.velocity.tools.config.FileFactoryConfiguration.read(FileFactoryConfiguration.java:59)
位于org.apache.velocity.tools.config.ConfigurationUtils.getDefaultTools(ConfigurationUtils.java:79)
位于org.apache.velocity.tools.config.ConfigurationUtils.getAutoLoaded(ConfigurationUtils.java:176)
位于org.apache.velocity.tools.ToolManager.autoConfigure(ToolManager.java:74)
位于org.apache.velocity.tools.ToolManager(ToolManager.java:68)
位于org.apache.velocity.tools.ToolManager(ToolManager.java:54)
在games.jfatchling.core.annotation.processor.CardAnnotationProcessor.process(CardAnnotationProcessor.java:116)
位于com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:793)
在com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverandrunpcs上(JavacProcessingEnvironment.java:722)
在com.sun.tools.javac.processing.JavacProcessingEnvironment.access$1700(JavacProcessingEnvironment.java:97)
位于com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1029)
位于com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1163)
位于com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1108)
位于com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:824)
位于com.sun.tools.javac.main.main.compile(main.java:439)
位于com.sun.tools.javac.api.javactasquimpl.call(javactasquimpl.java:132)
位于org.bsc.maven.plugin.processor.AbstractAnnotationProcessorMojo.ExecuteWitheExceptionsHandled(AbstractAnnotationProcessorMojo.java:424)
位于org.bsc.maven.plugin.processor.AbstractAnnotationProcessorMojo.execute(AbstractAnnotationProcessorMojo.java:250)
位于org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
位于org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
位于org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
位于org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
位于org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
位于org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
位于org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
位于org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
在org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
在org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)上
位于org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
位于org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
位于org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)中
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:601)
位于org.codehaus.plexus.classworlds.launcher.launcher.launchEnhanced(launcher.java:290)
位于org.codehaus.plexus.classworlds.launcher.launcher.launch(launcher.java:230)
位于org.codehaus.plexus.classworlds.launcher.launcher.mainWithExitCode(launcher.java:409)
位于org.codehaus.plexus.classworlds.launcher.launcher.main(launcher.java:352)
原因:org.xml.sax.saxpasseeption;行号:23;栏目编号:58;第23行错误:org.apache.velocity.tools.config.Data
位于org.apache.commons.digester.digester.createSAXException(digester.java:3181)
位于org.apache.commons.digester.digester.createSAXException(digester.java:3207)
位于org.apache.commons.digester.digester.startElement(digester.java:1456)
位于com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:506)
位于com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:182)
在com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:1303)
位于com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2717)
位于com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:607)
位于com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:489)
位于com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:835)
在
<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>
<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>
new ToolManager(false,false)
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));
}