弹簧靴白标404
Posted
技术标签:
【中文标题】弹簧靴白标404【英文标题】:Spring boot whitelabel 404 【发布时间】:2015-07-04 10:29:13 【问题描述】:大家好,即使我已经按照他们网站上的 spring 教程进行操作,我仍然会收到此错误。我一直在试图弄清楚为什么我会收到这个错误。我能够连接到 facebook,但是当尝试像 spring 提供的教程那样检索提要时,我不断收到白标签错误。它说:
此应用程序没有显式映射 /error,因此您将其视为后备。出现意外错误(类型=未找到,状态=404)。没有可用的消息
一切似乎都很好,但不知道为什么我不断收到此错误。如果有人可以提供帮助,我将不胜感激。
我的控制器放在 src/main/java/home:
@Controller
@RequestMapping(value="/")
public class HomeController
private Facebook facebook;
@Inject
public HomeController(Facebook facebook)
this.facebook = facebook;
@RequestMapping( method =RequestMethod.GET)
public String getPhotos(Model model)
if(!facebook.isAuthorized())
return "redirect:/connect/facebook";
model.addAttribute(facebook.userOperations().getUserProfile());
PagedList<Post> homeFeed = facebook.feedOperations().getHomeFeed();
model.addAttribute("feed", homeFeed);
return "hello";
Application.java 文件放在 src/main/java/home/main:
@SpringBootApplication
public class Application
public static void main(String[] args)
SpringApplication.run(Application.class, args);
下面是我的 build.gradle 文件:
apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'spring-boot'
buildscript
repositories
// maven url "https://repo.spring.io/release"
maven url "https://repo.spring.io/libs-milestone"
// mavenCentral()
dependencies
classpath("org.springframework.boot:spring-boot-gradle-plugin:1.2.3.RELEASE")
repositories
maven url "https://repo.spring.io/libs-milestone"
mavenCentral()
bootRepackage
mainClass = 'facebookArchiver.Application'
dependencies
compile ('org.springframework.social:spring-social-facebook:2.0.0.RELEASE')
compile("org.springframework.boot:spring-boot-starter-thymeleaf")
compile('org.springframework.boot:spring-boot-starter-web')
testCompile group: 'junit', name: 'junit', version: '4.11'
task wrapper(type: Wrapper)
gradleVersion = '2.3'
hello.html 文件:保存在 src/main/resources/templates 文件夹中:
<html>
<head>
<title>Hello Facebook</title>
</head>
<body>
<h3>Hello, <span th:text="$facebookProfile.name">Some User</span>!</h3>
<h4>Here is your home feed:</h4>
<div th:each="post:$feed">
<b th:text="$post.from.name">from</b> wrote:
<p th:text="$post.message">message text</p>
<img th:if="$post.picture" th:src="$post.picture"/>
<hr/>
</div>
</body>
</html>
facebookConnect.html:它存储在 src/main/resources/templates/connect 文件夹下:
<html>
<head>
<title>Hello Facebook</title>
</head>
<body>
<h3>Connect to Facebook</h3>
<form action="/connect/facebook" method="POST">
<input type="hidden" name="scope" value="read_stream" />
<div class="formInfo">
<p>You aren't connected to Facebook yet. Click the button to connect this application with your Facebook account.</p>
</div>
<p><button type="submit">Connect to Facebook</button></p>
</form>
</body>
</html>
最后是 facebookConnected.html:也存储在 src/main/resources/templates/connect 文件夹下:下面是 facebookConnected.html 的文件:
<html>
<head>
<title>Hello Facebook</title>
</head>
<body>
<h3>Connected to Facebook</h3>
<p>
You are now connected to your Facebook account.
Click <a href="/">here</a> to see some entries from your Facebook photos.
</p>
</body>
</html>
【问题讨论】:
@Oldskool 感谢编辑 您指定的错误是一般错误页面。您可以发布异常详细信息吗?如果您在终端中运行应用程序,则必须有异常堆栈跟踪。 你看到了吗?2015-04-26 16:11:53.987 INFO 4817 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "[/],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]" onto public java.lang.String hello.HelloController.helloFacebook(org.springframework.ui.Model)
@AlJacinto 出现错误是因为我将 Application 类放在与 HomeController.java 不同的包中。它找不到放在模板中的 home.html。你知道我该如何解决吗?
你有 home.html 吗?应该只是 hello.html。你有没有看到任何页面?
【参考方案1】:
如果您的控制器在不同的包结构中,则需要将@ComponentScan
添加到Spring Boot
应用程序class
。
示例:
@ComponentScan(basePackages="package name of where the controller is")
【讨论】:
谢谢,这拯救了我的一天。 谢谢,它成功了,我们是否还需要包含包名,它也有 POJO 类?【参考方案2】:如果你将控制器和存储库放在不同的包中,
然后 @ComponentScan 和 @EnableMongoRepositories 注释,我们必须给出控制器和存储库的完整包名。
@ComponentScan(basePackages="package name of controller", "package name of repository")
@EnableMongoRepositories("package name of repository")
【讨论】:
【参考方案3】:您可以尝试使用以下
@RestController and produces = MediaType.APPLICATION_JSON_VALUE
例如
@RestController
public class MyController
@GetMapping(value = "/xyz/ab", produces = MediaType.APPLICATION_JSON_VALUE)
【讨论】:
【参考方案4】:我遇到了同样的白标错误。我花了几个小时才弄清楚实际上百里香依赖没有得到正确解决。解决方案既简单又愚蠢。
-
停止 tomcat。
右键单击项目。
Gradle -> 刷新 gradle 项目(或 maven 的类似步骤)
启动 tomcat。
如果不起作用,请更改 build.gradle 中下一行的位置(向上或向下移动),然后执行上述步骤。
编译('org.springframework.boot:spring-boot-starter-thymeleaf')
重要的是,您必须在 tomcat 未运行时更新您的项目。如果我们使用 devtools,我们会盲目地依赖它来重新启动我们的 servlet 容器和其他东西,但有时手动启动停止会很方便。
【讨论】:
以上是关于弹簧靴白标404的主要内容,如果未能解决你的问题,请参考以下文章
如果 JSON 字符串包含大于 10 位的数字,则 404 弹簧控制器错误