Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot java.io.FileNotFoundException:/BOOT-inf/classes/模板/_Spring Boot_Spring Data Jpa - Fatal编程技术网

Spring boot java.io.FileNotFoundException:/BOOT-inf/classes/模板/

Spring boot java.io.FileNotFoundException:/BOOT-inf/classes/模板/,spring-boot,spring-data-jpa,Spring Boot,Spring Data Jpa,我正在使用springboot创建一个项目,运行这个想法没有错误,但是,运行app.jar文件,它是这样运行的异常 java.io.FileNotFoundException: class path resource [templates/] cannot be resol ed to absolute file path because it does not reside in the file system: jar:fil :/E:/projects/help/target/zhx-he

我正在使用springboot创建一个项目,运行这个想法没有错误,但是,运行app.jar文件,它是这样运行的异常

java.io.FileNotFoundException: class path resource [templates/] cannot be resol
ed to absolute file path because it does not reside in the file system: jar:fil
:/E:/projects/help/target/zhx-help-0.0.1-SNAPSHOT.jar!/BOOT-INF/classes!/templa
es/
    at org.springframework.util.ResourceUtils.getFile(ResourceUtils.java:21
)
    at org.springframework.core.io.AbstractFileResolvingResource.getFile(Ab
tractFileResolvingResource.java:52)
    at org.springframework.ui.freemarker.FreeMarkerConfigurationFactory.get
emplateLoaderForPath(FreeMarkerConfigurationFactory.java:338)
    at org.springframework.ui.freemarker.FreeMarkerConfigurationFactory.cre
teConfiguration(FreeMarkerConfigurationFactory.java:290)
    at org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer
   afterPropertiesSet(FreeMarkerConfigurer.java:116)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBea
Factory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1687)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBea
Factory.initializeBean(AbstractAutowireCapableBeanFactory.java:1624)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBea
Factory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBea
Factory.createBean(AbstractAutowireCapableBeanFactory.java:483)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getO
ject(AbstractBeanFactory.java:306)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegist
y.getSingleton(DefaultSingletonBeanRegistry.java:230)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetB
an(AbstractBeanFactory.java:302)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBea
(AbstractBeanFactory.java:197)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory
springboot版本:1.5.2


使用spring数据jpa

我看到您使用了freemarker。在spring boot中,您不能使用正常的
文件
方法来获取模板,因为当您运行可执行JAR时,模板是不可访问的(
文件
在JAR中不能作为资源加载)

使用以下方法加载模板文件夹:

cfg.setTemplateLoader(new ClassTemplateLoader(getClass().getClassLoader(), "templates"));
完整示例:

@Configuration
public class FreemarkerConfiguration {

    @Bean
    public freemarker.template.Configuration freemarkerConfig() throws IOException {
        freemarker.template.Configuration cfg = new freemarker.template.Configuration(freemarker.template.Configuration.VERSION_2_3_23);
        cfg.setTemplateLoader(new ClassTemplateLoader(getClass().getClassLoader(), "templates"));
        cfg.setDefaultEncoding("UTF-8");
        cfg.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);
        cfg.setLogTemplateExceptions(false);
        return cfg;
    }

}

FreeMarkerConfigurationFactory.class

protected TemplateLoader getTemplateLoaderForPath(String templateLoaderPath) {
    if(this.isPreferFileSystemAccess()) {
        try {
            Resource ex = this.getResourceLoader().getResource(templateLoaderPath);
            File file = ex.getFile();
            if(this.logger.isDebugEnabled()) {
                this.logger.debug("Template loader path [" + ex + "] resolved to file path [" + file.getAbsolutePath() + "]");
            }

            return new FileTemplateLoader(file);
        } catch (IOException var4) {
            if(this.logger.isDebugEnabled()) {
                this.logger.debug("Cannot resolve template loader path [" + templateLoaderPath + "] to [java.io.File]: using SpringTemplateLoader as fallback", var4);
            }

            return new SpringTemplateLoader(this.getResourceLoader(), templateLoaderPath);
        }
    } else {
        this.logger.debug("File system access not preferred: using SpringTemplateLoader");
        return new SpringTemplateLoader(this.getResourceLoader(), templateLoaderPath);
    }
}
所以,让日志杠杆信息

<logger name="org.springframework.web" level="INFO"/>

如果您将jersey与spring boot配合使用,则jersey与spring boot的配合效果不佳。此错误的原因是,jersey无法自动发现所有剩余资源。要解决此问题,请显式注册所有资源,注册包不起作用。希望此问题在未来版本的泽西岛上得到解决

公共类JerseyConfig扩展了ResourceConfig{

public JerseyConfig() {
    register(Resource1.class);
    register(Resource2.class);
    register(Resource3.class);
}
}