Spring Boot指南说我可以使用H2控制台,但它对我不起作用。
http://localhost:8080/h2/ Whitelabel错误页面 此应用程序没有/ error的显式映射,因此您将此视为回退。 10月26日星期三12:31:46 BST 2016 出现意外错误(type = Not Found,status = 404)。 没有可用的消息
我创建了一个application.properties
文件,如下所示
spring.h2.console.enabled=true
spring.h2.console.path=/h2
我的项目基于this
默认路径/h2-console
也不起作用。
我找到另一个答案,通过添加Application.java
来解决问题:
@Bean
public ServletRegistrationBean h2servletRegistration() {
ServletRegistrationBean registration = new ServletRegistrationBean(new WebServlet());
registration.addUrlMappings("/h2/*");
return registration;
}
我的application.properties
文件中的所有内容都会被忽略。我试过添加:
spring.datasource.url=jdbc:h2:file:~/portal;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.username=sa
spring.datasource.password=
spring.datasource.driverClassName=org.h2.Driver
但数据库仍然只在内存中创建。
答案 0 :(得分:5)
您当前的位置src\main\java\hello\application.properties
是罪魁祸首。有两个原因。
src\main\java
中的非Java资源application.properties
目录中config
或考虑(默认情况下)。 (见reference guide)。 修复方法是将您的application.properties
移至src\main\resources
。
答案 1 :(得分:3)
检查是否在application.properties中设置了基本路径。
例如,如果您有设置
server.contextPath=/api
您可以访问
下的h2控制台http://localhost:8080/api/h2-console
很明显,但那对我来说是
答案 2 :(得分:2)
在/
看起来像spring.h2.console.path
之前缺少spring.h2.console.path=/h2
:
spring.h2.console.path
当您指出/h2-console
<<<<<<< HEAD:file.txt
Hello world
=======
Goodbye
>>>>>>> 77976da35a11db4580b80ae27e8d65caf5208086:file.txt
不再可用时
此致
答案 3 :(得分:2)
此问题的另一个可能原因是,如果您使用的是 spring security 。
在这种情况下,您可能想要向您定义的h2控制台URL添加特定权限。
例如,对于默认的h2-console配置(没有spring.h2.console.path
属性),可以将其添加到 WebSecurityConfigurerAdapter 扩展类内:
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/h2-console/**").permitAll()
.anyRequest().authenticated();
http.headers().frameOptions().sameOrigin();
}
也请注意该行的末尾-http.headers().frameOptions().sameOrigin();
。
登录控制台时,需要防止Whitelable页面错误。
merge
也对此进行了描述。
答案 4 :(得分:0)
对我来说 - 计算机重启会修复它。
不确定为什么会出现这种情况,但可能是端口被占用,或者h2相关文件没有正确部署
确保在启动springBoot应用程序时,您可以看到Hibernate和H2的日志行存在:
2017-04-22 14:41:03.195 INFO 912 --- [ main] org.hibernate.Version : HHH000412: Hibernate Core {5.0.12.Final}
2017-04-22 14:41:03.197 INFO 912 --- [ main] org.hibernate.cfg.Environment : HHH000206: hibernate.properties not found
2017-04-22 14:41:03.199 INFO 912 --- [ main] org.hibernate.cfg.Environment : HHH000021: Bytecode provider name : javassist
2017-04-22 14:41:03.278 INFO 912 --- [ main] o.hibernate.annotations.common.Version : HCANN000001: Hibernate Commons Annotations {5.0.1.Final}
2017-04-22 14:41:03.469 INFO 912 --- [ main] org.hibernate.dialect.Dialect : HHH000400: Using dialect: org.hibernate.dialect.H2Dialect
2017-04-22 14:41:03.935 INFO 912 --- [ main] org.hibernate.tool.hbm2ddl.SchemaExport : HHH000227: Running hbm2ddl schema export
2017-04-22 14:41:03.945 INFO 912 --- [ main] org.hibernate.tool.hbm2ddl.SchemaExport : HHH000230: Schema export complete
答案 5 :(得分:0)
对于这个问题,我只需在我的application.properties上添加默认字符串并运行。
spring.datasource.url=jdbc:h2:file:~/test
spring.datasource.username=sa
spring.datasource.password=
spring.datasource.driver-class-name=org.h2.Driver
也许弹簧靴不会出于某种原因设置它。
答案 6 :(得分:0)
就我而言,我只需要按照here中的说明从h2依赖项中删除标签<scope>runtime</scope>
。
答案 7 :(得分:0)
在application.properties中尝试以下操作
spring.h2.console.enabled: true
答案 8 :(得分:0)
在我的情况下,可以从<scope>test</scope>
中的h2 dependency
中删除pom.xml
。
修改后,请不要忘记重新安装并重新构建。
<!-- H2 database -->
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.199</version>
<!-- <scope>test</scope> -->
</dependency>
答案 9 :(得分:0)
我在Gradle声明中使用了 compile 或 testCompile ,对我来说很好。
示例:
compile group: 'com.h2database', name: 'h2', version: '1.4.200'
答案 10 :(得分:0)
如果您在忽略该application.properties的程序时遇到麻烦,并且正在使用 Eclipse ,请执行以下操作:
将application.properties移到src / main / resources文件夹中,右键单击它,然后单击“构建路径”->“添加到构建路径”
答案 11 :(得分:0)
我在构建微服务项目时尝试了h2-console,却遇到了同样的问题“ Whitelabel错误页面”。 我目前尚未在项目中添加任何安全性,但是我发现可以通过从application.properties中删除 spring.h2.console.enabled = true 并添加依赖项 dev解决我的问题。 -工具。对我来说,不添加dev-tools也会导致此问题,因此也请尝试添加此依赖项。当然,您将添加h2,执行器,Web依赖项。
答案 12 :(得分:0)
确保使用> spring.datasource.url=jdbc:h2:mem:testdb
,因为 h2 需要此数据库
答案 13 :(得分:0)
尝试添加到 application.properties
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
//然后 创建类 SecurityConfig
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity httpSecurity) throws Exception {
httpSecurity.authorizeRequests().antMatchers("/").permitAll().and()
.authorizeRequests().antMatchers("/h2-console/**").permitAll();
httpSecurity.csrf().disable();
httpSecurity.headers().frameOptions().disable();
}
}
答案 14 :(得分:0)
对我来说,scope=test 是我不小心从 https://mvnrepository.com/artifact/com.h2database/h2/1.4.200
复制的问题 <dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.200</version>
<scope>test</scope>
</dependency>
并将其替换为
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.200</version>
<scope>runtime</scope>
</dependency>
我没有使用 Spring Security,但您可能需要相应地进行某些更改。请检查以上答案https://stackoverflow.com/a/59729714/7359806