【问题标题】:I got a "Whitelabel Error Page" when using Eureka server使用 Eureka 服务器时出现“Whitelabel 错误页面”
【发布时间】:2019-05-03 18:25:29
【问题描述】:

我使用 SPRING INITIALIZR 创建了一个 Spring Cloud 项目。我的项目结构如下: enter image description here

演示应用程序:

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication
@EnableEurekaServer
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

application.properties:

server.port=8888
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.instance.hostname=localhost
eureka.client.service-url.defaultZone=localhost:8888/eureka
spring.application.name=appName

pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>demo</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.1.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <spring-cloud.version>Greenwich.M3</spring-cloud.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

    <repositories>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>
</project>

但是当我访问localhost:8888时,出现如下错误:

白标错误页面 此应用程序没有 /error 的显式映射,因此您将其视为后备。

2018 年 12 月 2 日星期日 11:23:36 CST 出现意外错误(类型=未找到,状态=404)。 没有可用的消息

我不知道为什么会这样。我该如何解决这个问题?

【问题讨论】:

    标签: spring-boot spring-cloud


    【解决方案1】:

    至少最新版本的 SpringBoot 和 Cloud 需要这些配置才能启动 Eureka UI:

    #in application.yml
    spring:
      freemarker:
        template-loader-path: classpath:/templates/
        prefer-file-system-access: false
    

    #in application.properties
    spring.freemarker.template-loader-path= classpath:/templates/
    spring.freemarker.prefer-file-system-access= false
    

    请看这里: https://cloud.spring.io/spring-cloud-static/spring-cloud-netflix/2.1.0.RELEASE/multi/multi_spring-cloud-eureka-server.html#netflix-eureka-server-starter

    【讨论】:

      【解决方案2】:

      对我来说,我使用 start.spring.io 生成了项目并且我选择了 Eureka Server,我不知道我需要自己在应用程序之上添加@EnableEurekaServer。它通过添加它起作用。

      【讨论】:

        【解决方案3】:

        我在使用 Greenwich.M3 spring cloud 版本时遇到了同样的问题。对我来说,将 Spring Cloud 版本更改为 Finchley.SR1 时它起作用了

        <spring-cloud.version>Finchley.SR1</spring-cloud.version>
        

        【讨论】:

          【解决方案4】:

          这对我有用:

          application.properties 文件:

          server.port=8888
          eureka.client.register-with-eureka=false
          eureka.client.fetch-registry=false
          eureka.instance.hostname=localhost
          eureka.client.service-url.defaultZone=http://localhost:8888/eureka
          spring.application.name=appName
          

          pom.xml:

          <?xml version="1.0" encoding="UTF-8"?>
          <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
              <modelVersion>4.0.0</modelVersion>
          
              <groupId>com.example</groupId>
              <artifactId>demo</artifactId>
              <version>0.0.1-SNAPSHOT</version>
              <packaging>jar</packaging>
          
              <name>demo</name>
              <description>Demo project for Spring Boot</description>
          
              <parent>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-parent</artifactId>
                  <version>2.1.1.RELEASE</version>
                  <relativePath/> <!-- lookup parent from repository -->
              </parent>
          
              <properties>
                  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
                  <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
                  <java.version>1.8</java.version>
                  <spring-cloud.version>Greenwich.M3</spring-cloud.version>
              </properties>
          
              <dependencies>
                  <dependency>
                      <groupId>org.springframework.boot</groupId>
                      <artifactId>spring-boot-starter-web</artifactId>
                  </dependency>
                  <dependency>
                      <groupId>org.springframework.cloud</groupId>
                      <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
                  </dependency>
          
                  <dependency>
                      <groupId>org.springframework.boot</groupId>
                      <artifactId>spring-boot-starter-test</artifactId>
                      <scope>test</scope>
                  </dependency>
              </dependencies>
          
              <dependencyManagement>
                  <dependencies>
                      <dependency>
                          <groupId>org.springframework.cloud</groupId>
                          <artifactId>spring-cloud-dependencies</artifactId>
                          <version>${spring-cloud.version}</version>
                          <type>pom</type>
                          <scope>import</scope>
                      </dependency>
                  </dependencies>
              </dependencyManagement>
          
              <build>
                  <plugins>
                      <plugin>
                          <groupId>org.springframework.boot</groupId>
                          <artifactId>spring-boot-maven-plugin</artifactId>
                      </plugin>
                  </plugins>
              </build>
          
              <repositories>
                  <repository>
                      <id>spring-milestones</id>
                      <name>Spring Milestones</name>
                      <url>https://repo.spring.io/milestone</url>
                      <snapshots>
                          <enabled>false</enabled>
                      </snapshots>
                  </repository>
              </repositories>
          
          
          </project>
          

          访问:本地主机:8888

          【讨论】:

          • eureka.client.service-url.defaultZone=localhost:8888/eureka将此添加到您的属性文件并再次检查
          • 我认为它会起作用。不要忘记在属性文件中命名您的应用程序名称
          • spring.application.name=appName
          • 还是没有
          • 您可以在您的系统中尝试这些。我不知道为什么它不起作用
          【解决方案5】:

          我用的是spring boot 2.2.1,spring cloud版本的Hoxton.RELEASE( &lt;spring-cloud.version&gt;Hoxton.RELEASE&lt;/spring-cloud.version&gt;),我的设置是:

          spring.application.name=testserver    
          server.port=8888
          
          eureka.client.register-with-eureka=false
          eureka.client.fetch-registry=false
          eureka.instance.hostname=localhost
          

          eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/

          对我来说,网址是http://localhost:8888/(不是http://localhost:8888/eureka)。

          对于服务器,url 取决于 server.port 和 server.servlet.context-path 属性(因此,如果我设置 server.servlet.context-path=/eureka,则 url 将是 http://localhost:8888/eureka

          【讨论】:

            猜你喜欢
            • 2020-02-25
            • 2020-04-23
            • 2020-08-15
            • 2021-10-09
            • 1970-01-01
            • 1970-01-01
            • 2021-12-20
            • 2020-03-03
            • 2020-08-24
            相关资源
            最近更新 更多