弹簧靴白标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的主要内容,如果未能解决你的问题,请参考以下文章

接收 404 运行弹簧靴

如果 JSON 字符串包含大于 10 位的数字,则 404 弹簧控制器错误

Spring mvc annotation配置。升级到弹簧4.3.9时出错404

Spring Boot JSP 404:找不到页面

弹簧休息控制器不适用于文件上传

白标 React Native 应用程序