- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我终于写完了一个非常“简单”的hello world项目。
当我从 IDE 运行它时,它工作得很好。
当我在 Windows 10 上运行 jar 并转到本地主机(我在端口 80 上运行)时,我会看到网页,一切正常。
一旦我将相同的 jar 放在我的 debian 服务器上,该服务器安装了与我的 Windows 机器相同的 mysql 和 java(并且没有安装或配置其他任何东西),并且我尝试导航到我得到的 IP 地址
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Sun Feb 26 02:54:40 UTC 2017
There was an unexpected error (type=Not Found, status=404).
Not Found
这告诉我 Spring Boot 正在运行(因为我关闭它的那一刻我无法再访问同一页面),但是我似乎无法导航到 Windows 计算机上可以导航到的任何页面.
我完全不知道我在这里做错了什么。
编辑:
感谢 Oleksandr Shpota,我明白了为什么事情不起作用。我的 jar 不包含我的 freemarker 文件。
我的build.gradle
apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'jetty'
apply plugin: 'war'
apply plugin: 'org.springframework.boot'
repositories {
mavenCentral()
}
dependencies {
compile("org.springframework.boot:spring-boot-starter-web:1.5.1.RELEASE") {
exclude module: "spring-boot-starter-tomcat"
}
compile group: 'org.springframework.boot', name: 'spring-boot-starter-jetty', version: '1.5.1.RELEASE'
compile group: 'org.springframework.boot', name: 'spring-boot-starter-actuator', version: '1.5.1.RELEASE'
compile group: 'org.springframework', name: 'spring-webmvc', version: '4.3.6.RELEASE'
compile group: 'org.springframework', name: 'spring-context-support', version: '4.3.6.RELEASE'
compile group: 'org.springframework', name: 'spring-orm', version: '4.3.6.RELEASE'
compile group: 'javax.servlet', name: 'javax.servlet-api', version: '3.1.0'
compile group: 'org.freemarker', name: 'freemarker', version: '2.3.23'
compile group: 'mysql', name: 'mysql-connector-java', version: '6.0.5'
compile group: 'org.hibernate', name: 'hibernate-core', version: '5.1.4.Final'
compile group: 'commons-validator', name: 'commons-validator', version: '1.5.1'
compile group: 'junit', name: 'junit', version: '4.12'
compile group: 'org.springframework.boot', name: 'spring-boot-starter-test', version: '1.5.1.RELEASE'
}
task wrapper(type: Wrapper) {
gradleVersion = '2.2'
}
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:1.5.1.RELEASE")
}
}
jar {
from {
(configurations.runtime).collect {
it.isDirectory() ? it : zipTree(it)
}
}
baseName = 'carefree-cooking'
version = '0.1.0'
manifest {
attributes 'Main-Class': 'carefree.cooking.Application'
}
}
springBoot {
executable = true
}
sourceCompatibility = 1.8
targetCompatibility = 1.8
用于配置 FreeMarker 的我的 Bean
@Bean(name = "freemarkerConfig")
public FreeMarkerConfigurer freemarkerConfig()
{
FreeMarkerConfigurer configurer = new FreeMarkerConfigurer();
configurer.setTemplateLoaderPath("/");
return configurer;
}
@Bean(name = "viewResolver")
public FreeMarkerViewResolver viewResolver()
{
FreeMarkerViewResolver viewResolver = new FreeMarkerViewResolver();
viewResolver.setPrefix("WEB-INF/template/");
viewResolver.setSuffix(".ftl");
return viewResolver;
}
我的索引 Controller
@RequestMapping()
public String index(ModelMap model)
{
log.info("======= We are in index controller going to load page");
return "page";
}
并且page.ftl
位于src\main\webapp\WEB-INF\template\page.ftl
所以这里的问题是,当我构建 jar 时,没有包含 page.ftl,也没有包含任何 webapp 目录。
最佳答案
您的模板位于错误的目录中。您正在创建一个 jar
文件,该文件不是 war
文件。但是,您已将文件放入该位置,因为它是 war
文件。
Spring Boot 还提供开箱即用的 Freemarker 支持,因此我建议您使用它,而不是自己手动配置它。所以要修复。
src/main/resources/templates
然后重新启动您的应用程序。
作为奖励,我建议清理您的 build.gradle
。删除启动器的显式版本并删除一些额外的依赖项,因为它们已经包含在启动器中。您不需要 Spring Boot 涵盖的 jetty
和 war
插件。
你的 jar 插件破坏了默认的 Spring Boot 功能,Spring Boot 插件已经解决了这个问题。
apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'org.springframework.boot'
repositories {
mavenCentral()
}
dependencies {
compile("org.springframework.boot:spring-boot-starter-web") {
exclude module: "spring-boot-starter-tomcat"
}
compile group: 'org.springframework.boot', name: 'spring-boot-starter-jetty''
compile group: 'org.springframework.boot', name: 'spring-boot-starter-actuator'
compile group: 'org.springframework.boot', name: 'spring-boot-starter-freemarker'
compile group: 'org.springframework', name: 'spring-orm'
compile group: 'mysql', name: 'mysql-connector-java'
compile group: 'org.hibernate', name: 'hibernate-core'
compile group: 'commons-validator', name: 'commons-validator', version: '1.5.1'
compileTest group: 'org.springframework.boot', name: 'spring-boot-starter-test'
}
task wrapper(type: Wrapper) {
gradleVersion = '3.3'
}
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:1.5.1.RELEASE")
}
}
springBoot {
executable = true
}
sourceCompatibility = 1.8
targetCompatibility = 1.8
关于java - 在服务器上运行 spring boot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42464300/
有人可以解释一下 spring-boot-parent 和 spring-boot-starter-parent 之间的区别吗,正如我在下面附加的 GIT HUB 代码链接之一中看到的,他们为 spr
我有与 jersey 框架集成的 Spring Boot 应用程序。 现在,当我尝试运行该应用程序时,它只是停留在 Spring 启动徽标上,之后没有任何 react 。 我也尝试添加 -X ,但徽标
我指的是 Spring Boot 关于 的文档自动配置 和 执行器 模块: 自动配置: Spring Boot AutoConfiguration attempts to automatically
我正在尝试将 apache log4j 集成到我的 Spring boot 应用程序中。这是我的 build.gradle 文件: build.gradle buildscript { rep
使用 Spring Boot Maven 插件的以下命令在生产中启动 Spring Boot 应用程序是否是一个好主意或实践? mvn spring-boot:run 最佳答案 不,这是个坏主意。 您
据我所知,spring boot 和 spring session 为我们提供了一站式自动配置,但是当我的应用程序使用 session redis 和应用程序缓存 redis 时,不是同一个 redi
我希望使用Spring Boot创建一个新的Web应用程序。不幸的是,我的服务器在技术堆栈方面相当有限。它安装了Java 5。 谁能告诉我spring boot是否可以在Java 1.5上运行以及什么
我有3个实体 CarWash(设置Wash) Wash(car_wash_id FK到CarWash) WashComment(wash_id FK到Wash) 有什么办法可以写这个查询 @Qu
我一直在关注this文章。 我正在尝试在Spring-boot应用程序中优雅地处理gRPC错误,的主要目标是能够在gRPC客户端中获取错误状态。 在上面的文章之后,我坚持为异常添加拦截器。如何在Spr
我有一个要使用的自定义log4j布局插件。在IntelliJ中运行或与./gradlew bootRun一起运行时,插件可以正常工作。不使用./gradlew bootJar构建启动jar。 启用-D
我想在给定范围 (5001-5100) 的随机端口上启动 Spring Cloud 应用程序(Spring Boot 1.5.14,Spring Cloud Edgware.SR4)。我知道我们可以使
任何人都可以向我展示或指出不使用 spring boot gradle 插件的 spring boot gradle 项目。 我正在寻找类似不使用 gradle 插件的 spring boot sta
我当时尝试包含上述依赖项之一,但找不到任何区别: spring boot starter web:我可以看到 Flux 和 Mono 类并制作一个响应式(Reactive)休息 Controller
我们一直在为我们的应用程序使用 Springboot 1.X。 现在准备开始一些新的应用程序,想知道我们是应该使用 SpringBoot2.0 还是坚持使用 SpringBoot 1.X? 对一种方式
我希望记录应用程序正在加载 application-profile.propeties 或 application.yml。怎么做。在哪种方法中,我可以听取它并检测它是成功加载还是失败。 最佳答案 您
当我在 pom.xml 中添加简单的 spring-boot-starter-data-jpa 依赖项时,在 pom.xml 文件中出现错误。如果我删除该依赖项,则不会再有错误。我不确定为什么会发生这
我希望记录应用程序正在加载 application-profile.propeties 或 application.yml。怎么做。在哪种方法中,我可以听取它并检测它是成功加载还是失败。 最佳答案 您
我在网上看了很多关于 spring-boot-devtools 的文章和问题,但仍然无法弄清楚为什么它对我不起作用。每次运行我的应用程序时,我都会得到以下信息: 17:54:28.057 [main]
我正在尝试将现有的 Spring 应用程序移植到 Spring Boot。我不使用 spring-boot-starter-data-solr 启动器,但是我的类路径上有 apache solrj (
(这主要是一个历史问题。Pivotal 建议所有论坛讨论都在 StackOverflow 上进行,这就是我在这里问它的原因。) Spring Boot 项目用来证明将应用程序的类和依赖项从可执行 ja
我是一名优秀的程序员,十分优秀!