@闲大赋 你好,想跟你请教个问题:
在eclipse中,可以正常找到路径。将工程生成jar包后运行就找不到模板路径了。主要代码如下:
public static void main(String[] args) { SpringApplication.run(Application.class, args); } @Bean(initMethod = "init", name = "beetlConfig") public BeetlGroupUtilConfiguration getBeetlGroupUtilConfiguration() { BeetlGroupUtilConfiguration beetlGroupUtilConfiguration = new BeetlGroupUtilConfiguration(); ResourcePatternResolver patternResolver = ResourcePatternUtils.getResourcePatternResolver(new DefaultResourceLoader()); try { // WebAppResourceLoader 配置root路径是关键 WebAppResourceLoader webAppResourceLoader = new WebAppResourceLoader(patternResolver.getResource("classpath:/templates/").getFile().getPath()); beetlGroupUtilConfiguration.setResourceLoader(webAppResourceLoader); } catch (IOException e) { e.printStackTrace(); } //读取配置文件信息 beetlGroupUtilConfiguration.setConfigFileResource(patternResolver.getResource("classpath:beetl.properties")); return beetlGroupUtilConfiguration; } @Bean(name = "beetlViewResolver") public BeetlSpringViewResolver getBeetlSpringViewResolver(@Qualifier("beetlConfig") BeetlGroupUtilConfiguration beetlGroupUtilConfiguration) { BeetlSpringViewResolver beetlSpringViewResolver = new BeetlSpringViewResolver(); beetlSpringViewResolver.setPrefix("/"); beetlSpringViewResolver.setSuffix(".html"); beetlSpringViewResolver.setContentType("text/html;charset=UTF-8"); beetlSpringViewResolver.setOrder(0); beetlSpringViewResolver.setConfig(beetlGroupUtilConfiguration); return beetlSpringViewResolver; }beetl.properties
#######默认配置 ENGINE=org.beetl.core.engine.FastRuntimeEngine DELIMITER_PLACEHOLDER_START=${ DELIMITER_PLACEHOLDER_END=} DELIMITER_STATEMENT_START=<% DELIMITER_STATEMENT_END=%> DIRECT_BYTE_OUTPUT = FALSE HTML_TAG_SUPPORT = true HTML_TAG_FLAG = # HTML_TAG_BINDING_ATTRIBUTE = var NATIVE_CALL = TRUE TEMPLATE_CHARSET = UTF-8 ERROR_HANDLER = org.beetl.core.ConsoleErrorHandler NATIVE_SECUARTY_MANAGER= org.beetl.core.DefaultNativeSecurityManager #RESOURCE_LOADER=org.beetl.core.resource.ClasspathResourceLoader #RESOURCE_LOADER=org.beetl.core.resource.WebAppResourceLoader.WebAppResourceLoader( MVC_STRICT = FALSE ### 资源配置,resource后的属性只限于特定ResourceLoader #### #classpath 跟路径 #RESOURCE.root= / #是否检测文件变化 RESOURCE.autoCheck = TRUE #自定义脚本方法文件位置 RESOURCE.functionRoot = functions #自定义脚本方法文件的后缀 RESOURCE.functionSuffix = html #自定义标签文件位置 RESOURCE.tagRoot = htmltag #自定义标签文件后缀 RESOURCE.tagSuffix = tag ##### 扩展 ############## ## 内置的方法 FN.date = org.beetl.ext.fn.DateFunction FN.nvl = org.beetl.ext.fn.NVLFunction FN.debug = org.beetl.ext.fn.DebugFunction #兼容以前版本,用has代替 FN.exist = org.beetl.ext.fn.CheckExistFunction FN.has = org.beetl.ext.fn.CheckExistFunction FN.printf = org.beetl.ext.fn.Printf FN.decode = org.beetl.ext.fn.DecodeFunction FN.assert = org.beetl.ext.fn.AssertFunction FN.print = org.beetl.ext.fn.Print FN.println = org.beetl.ext.fn.Println FN.trunc = org.beetl.ext.fn.TruncFunction #兼容以前版本 empty,用isEmpty代替 FN.empty = org.beetl.ext.fn.EmptyFunction FN.qmark = org.beetl.ext.fn.QuestionMark FN.isEmpty = org.beetl.ext.fn.EmptyExpressionFunction FN.parseInt = org.beetl.ext.fn.ParseInt FN.parseLong = org.beetl.ext.fn.ParseLong FN.parseDouble= org.beetl.ext.fn.ParseDouble FN.range = org.beetl.ext.fn.Range FN.flush = org.beetl.ext.fn.Flush FN.json = org.beetl.ext.fn.Json ##内置的功能包 FNP.strutil = org.beetl.ext.fn.StringUtil FNP.array = org.beetl.ext.fn.ArrayUtil ##内置的格式化函数 FT.dateFormat = org.beetl.ext.format.DateFormat FT.numberFormat = org.beetl.ext.format.NumberFormat ##内置的默认格式化函数 FTC.java.util.Date = org.beetl.ext.format.DateFormat FTC.java.sql.Date = org.beetl.ext.format.DateFormat FTC.java.sql.Time = org.beetl.ext.format.DateFormat FTC.java.sql.Timestamp = org.beetl.ext.format.DateFormat FTC.java.lang.Short = org.beetl.ext.format.NumberFormat FTC.java.lang.Long = org.beetl.ext.format.NumberFormat FTC.java.lang.Integer = org.beetl.ext.format.NumberFormat FTC.java.lang.Float = org.beetl.ext.format.NumberFormat FTC.java.lang.Double = org.beetl.ext.format.NumberFormat FTC.java.math.BigInteger = org.beetl.ext.format.NumberFormat FTC.java.math.BigDecimal = org.beetl.ext.format.NumberFormat FTC.java.util.concurrent.atomic.AtomicLong = org.beetl.ext.format.NumberFormat FTC.java.util.concurrent.atomic.AtomicInteger = org.beetl.ext.format.NumberFormat ##虚拟属性 无 ## 标签类 TAG.include= org.beetl.ext.tag.IncludeTag TAG.includeFileTemplate= org.beetl.ext.tag.IncludeTag TAG.layout= org.beetl.ext.tag.LayoutTag TAG.delete= org.beetl.ext.tag.DeleteTag TAG.htmltag= org.beetl.ext.tag.HTMLTagSupportWrapper TAG.htmltagvar= org.beetl.ext.tag.HTMLTagVarBindingWrapper TAG.cache= org.beetl.ext.tag.cache.CacheTag报错信息如下:
2016-04-05 20:04:10.494 INFO 6876 --- [ main] org.hibernate.tool.hbm2ddl.SchemaExport : HHH000230: Schema export complete java.io.FileNotFoundException: class path resource [templates/] cannot be resolved to absolute file path because it does not reside in the file system : jar:file:/D:/Workspace/SpringBootExample/target/SpringBootExample-1.0.jar!/templates/ at org.springframework.util.ResourceUtils.getFile(ResourceUtils.java:218) at org.springframework.core.io.AbstractFileResolvingResource.getFile(AbstractFileResolvingResource.java:52) at com.onon.example.Application.getBeetlGroupUtilConfiguration(Application.java:33) at com.onon.example.Application$$EnhancerBySpringCGLIB$$90574f40.CGLIB$getBeetlGroupUtilConfiguration$0(<generated>) at com.onon.example.Application$$EnhancerBySpringCGLIB$$90574f40$$FastClassBySpringCGLIB$$fcd5f4f7.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228) at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:355) at com.onon.example.Application$$EnhancerBySpringCGLIB$$90574f40.getBeetlGroupUtilConfiguration(<generated>) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:162) at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:588) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFacto ry.java:1123) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:101 8) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:510) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
使用ClasspathLoader
ClasPathLoaderclassPathLoader=newClasPathLoader("templates/")beetlGroupUtilConfiguration.setResourceLoader(classPathLoader);
你的模板在jar中,所以不能用WebResourceLoader(它是按照文件路径加载的),你可以用ClasspathLoader试试
http://git.oschina.net/xiandafu/springboot_beetl_beetlsql参考这个工程 @闲大赋 这个问题在切换成springboot1.4版本后依然存在。使用ClasspathLoader
ClasPathLoaderclassPathLoader=newClasPathLoader("templates/")beetlGroupUtilConfiguration.setResourceLoader(classPathLoader);
没有ClassPathLoader这个类,这个类是sun.rmi.rmic.iiop的?我现在能正常运行,但是执行不了单元测试,Maven的打包的时候执行测试都可以通过,手动执行测试就不行,报如下错误:
java.io.FileNotFoundException:classpathresource[resources/]cannotberesolvedtoabsolutefilepathbecauseitdoesnotresideinthefilesystem:jar:file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/lib/ant-javafx.jar!/resources/
请问能不能把你的配置给我看看,我也出现你那个问题了。
写得不错,鼓励一下,再分享一份资料。
http://www.marsitman.com/springboot/springboot_helloworld.html
我是这样配置的,可以启动
@Value("${RESOURCE.root:/templates}")
StringresourceRoot;//模板跟目录
@Bean(initMethod="init",name="beetlConfig")
publicBeetlGroupUtilConfigurationgetBeetlGroupUtilConfiguration(){
BeetlGroupUtilConfigurationbeetlGroupUtilConfiguration=newBeetlGroupUtilConfiguration();
ClasspathResourceLoaderclassPathLoader=newClasspathResourceLoader(this.getClass().getClassLoader(),
resourceRoot);
beetlGroupUtilConfiguration.setResourceLoader(classPathLoader);
//读取配置文件信息
ResourcePatternResolverpatternResolver=ResourcePatternUtils
.getResourcePatternResolver(newDefaultResourceLoader());
beetlGroupUtilConfiguration.setConfigFileResource(patternResolver.getResource("classpath:beetl.properties"));
returnbeetlGroupUtilConfiguration;
}
@Bean(name="beetlViewResolver")
publicBeetlSpringViewResolvergetBeetlSpringViewResolver(
@Qualifier("beetlConfig")BeetlGroupUtilConfigurationbeetlGroupUtilConfiguration){
BeetlSpringViewResolverbeetlSpringViewResolver=newBeetlSpringViewResolver();
beetlSpringViewResolver.setContentType("text/html;charset=UTF-8");
//beetlSpringViewResolver.setPrefix("/");
beetlSpringViewResolver.setSuffix(".html");
beetlSpringViewResolver.setOrder(0);
beetlSpringViewResolver.setConfig(beetlGroupUtilConfiguration);
returnbeetlSpringViewResolver;
}
你好,请问怎么配置beet模板在webapp路径下?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。