当前位置: 首页 > 知识库问答 >
问题:

Spring Boot索引未加载

顾宸
2023-03-14

我有一个Spring boot应用程序。

我没有使用@enablewebmvc,我的资源在src/main/resources/static文件夹中。当我尝试加载localhost:8080/ui/时,它只是下载一个随机文件(类型:octet-stream)。如果我直接使用/ui/index.html,它就能工作。

我也在使用WebSecurityConfigurerAdapter,但这似乎不是问题的原因。

package my.package;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;

//@EnableWebMvc //Breaks js resource loading
@SpringBootApplication
@EnableJpaRepositories
@EnableZuulProxy
public class MyApplication {

    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}
<?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>nl.jaarsma</groupId>
    <artifactId>my-application</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>my-application</name>
    <description>Example app</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.9.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>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Dalston.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zuul</artifactId>
        </dependency>
<!--        <dependency> -->
<!--            <groupId>org.springframework.boot</groupId> -->
<!--            <artifactId>spring-boot-starter-actuator</artifactId> -->
<!--        </dependency> -->

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-rest</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <!-- <scope>runtime</scope> -->
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-collections4</artifactId>
            <version>4.1</version>
        </dependency>

        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
            <version>1.6</version>
        </dependency>


<!--        <dependency> -->
<!--            <groupId>org.springframework.boot</groupId> -->
<!--            <artifactId>spring-boot-starter-thymeleaf</artifactId> -->
<!--        </dependency> -->

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

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

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


    <profiles>
        <profile>
            <id>include-ui</id>
            <build>
            <plugins>
                <plugin>
                    <groupId>com.github.eirslett</groupId>
                    <artifactId>frontend-maven-plugin</artifactId>

                    <configuration>
                        <workingDirectory>ui</workingDirectory>
                    </configuration>
                    <executions>
                        <execution>
                            <id>install node and npm</id>
                            <goals>
                                <goal>install-node-and-npm</goal>
                            </goals>
                            <configuration>
                                <nodeVersion>v6.11.1</nodeVersion>
                                <npmVersion>3.10.10</npmVersion>
                            </configuration>
                        </execution>

                        <execution>
                            <id>npm install</id>
                            <goals>
                                <goal>npm</goal>
                            </goals>
                            <configuration>
                                <arguments>install</arguments>
                            </configuration>
                        </execution>

                        <execution>
                            <id>npm run build</id>
                            <goals>
                                <goal>npm</goal>
                            </goals>
                            <configuration>
                                <arguments>run build</arguments>
                            </configuration>
                        </execution>

                    </executions>
                </plugin>
            </plugins>

                <resources>
                    <resource>
                        <directory>src/main/resources</directory>
                    </resource>
                    <resource>
                        <filtering>false</filtering>
                        <directory>ui/dist</directory>
                        <includes>
                            <include>**</include>
                        </includes>
                        <targetPath>static/ui</targetPath>
                    </resource>
                </resources>
            </build>
        </profile>
    </profiles>
</project>

共有1个答案

拓拔烨赫
2023-03-14

Spring Boot将自动添加位于以下任何目录中的静态web资源:Link

/META-INF/resources/
/resources/
/static/
/public/

默认情况下,Spring Boot从类路径中的资源“/static”(或“/public”)提供静态内容。

index.html资源是特殊的,因为如果它存在,它会被用作“欢迎页面”,这意味着它将被作为根资源提供,即在我们的示例中位于http://localhost:8080/。链接

对于您的情况,您需要告诉spring您的index.html的位置

public class MyApplication {


    @Bean
    WebMvcConfigurer configurer () {
        return new WebMvcConfigurerAdapter() {
            @Override
            public void addResourceHandlers (ResourceHandlerRegistry registry) {
                registry.addResourceHandler("/ui/").
                          addResourceLocations("classpath:/static/ui/index.html");
            }
        };
    }


    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}
 类似资料:
  • 我有一个带有spring boot的java项目,我需要加载应用程序。外部文件夹中的属性和依赖项jar。 我使用该应用程序进行了测试。类路径和加载程序中的属性。路径属性工作正常。 当我使用外部属性文件(我确信它们已被使用)时,加载程序。路径工作不正常,结果为ClassNotFound,因为JAR未加载。 此外,当我启动应用程序与**-Dloader.path=**xxx它的工作正常。 如何使用外部

  • 嗨,我正在使用springboot 1.5.3。大摇大摆地释放。当我运行应用程序时,我可以通过访问“localhost:3030/v2/api文档”来访问json swagger响应。但我无法访问“localhost:3030/swagger ui.html”,同时显示未找到“/swagger ui.html”的映射。我如何解决这个问题。 依赖关系 招摇过市配置

  • 问题内容: 这听起来真的很愚蠢,但我无法弄清楚为什么会收到此错误。 我创建了一个选择框,以我的html形式命名为“ query_age”: 在相应的php形式中,我有: 运行页面时,出现此错误: 注意:未定义的索引:第19行的index.php中的query_age 我不明白为什么会这样,我很想知道如何解决它。 问题答案: 我没有看到php文件,但是可能就是这样- 在您的php文件中替换: 与:

  • 我正在使用Spring Boot webflow和Spring data reactive mongob。我有一个用@Document注释的用户类,它实现了User细节。问题是我有一个带有@Indux(唯一=true)的字段。当应用程序启动时,即使在数据库上创建索引,它也会抛出下面的错误。 以下是课程: 错误: 谢谢你的帮助。

  • 我整晚都在做这个,快把我逼疯了。它应该很简单,但它不起作用。这适用于Oracle,但不适用于MySQL,我创建了类似的数据库。使用-f选项提供给logstash的配置。 } 输出{stdout{codec= } 一旦我运行了logstash,它就不会将数据加载到弹性搜索索引中。当我执行以下操作时,我甚至看不到名为visitDb的索引。 curl'localhost:9200/_cat/索引?v'

  • 问题内容: 我正在尝试重新学习一些用于编写简单登录脚本的PHP基础知识,但是遇到了以前从未收到的错误(一年多以前我制作了相同的脚本,但从未遇到此错误。我尽可能简化了代码我可以测试一下哪个区域出了问题,这就是问题所在: 现在,当我将变量发送到脚本时,此代码可以正常工作,但是如果未提供任何变量,它将发出错误。从理论上讲,这会很好,因为如果没有提供用户名/密码,则可能会出现错误。在将代码发送到脚本之前,