JHipster项目启动后默认的8080主页是空白页面?
1、背景
根据官网一步步地生成项目,他喵的启动后居然是一个空白页面,这怎么玩啊?还有这种操作的吗?跟说好的不一样啊!关于JHipster资料,国内少的可怜,几乎都是同一样的东西,纯介绍的文章,只好上stackoverflow上查了。
2、相似的情况
在stackoverflow找到了一个相似的提问,不过没有具体的解决方法,倒是里面的某个评论给了我很大的提示。
By default, yarn listens on port 9000 (webpack + browser sync) to hot reload frontend code and contents, maven or gradle listens on port 8080 to hot reload server code. You must run both in dev.
在开发阶段,通常使用yarn start来启动angular2,可以在开发过程中热加载修改后的代码,然后通过./mvnw来启动Spring Boot后端的api服务。
那么问题来了,我以后要上线的时候也要这样启动啊?(╯‵□′)╯︵┻━┻
3、解决过程
由于前端是angular2,虽然可以热加载方便开发者开发,但是上线也不会这样做的。
通过了解angular2,可以通过ng build打包好,然后可以直接访问主页。
我在项目的目录下执行ng build后,打包好的代码自动生成到target的www上面。
再次启动项目,还是空白页面,回到原点。
打开浏览器的F12的network,居然只有一个localhost???
不对啊!为什么只会有一个localhost呢?其他资源没有加载吗?有猫腻!
打开生成项目的代码,找到配置web资源的WebConfigurer,通过查看代码,我们可以看到:
public void customize(ConfigurableEmbeddedServletContainer container) {
MimeMappings mappings = new MimeMappings(MimeMappings.DEFAULT);
// IE issue, see https://github.com/jhipster/generator-jhipster/pull/711
mappings.add("html", "text/html;charset=utf-8");
// CloudFoundry issue, see https://github.com/cloudfoundry/gorouter/issues/64
mappings.add("json", "text/html;charset=utf-8");
container.setMimeMappings(mappings);
// When running in an IDE or with ./mvnw spring-boot:run, set location of the static web assets.
setLocationForStaticAssets(container);
/*
* Enable HTTP/2 for Undertow - https://twitter.com/ankinson/status/829256167700492288
* HTTP/2 requires HTTPS, so HTTP requests will fallback to HTTP/1.1.
* See the JHipsterProperties class and your application-*.yml configuration files
* for more information.
*/
if (jHipsterProperties.getHttp().getVersion().equals(JHipsterProperties.Http.Version.V_2_0) &&
container instanceof UndertowEmbeddedServletContainerFactory) {
((UndertowEmbeddedServletContainerFactory) container)
.addBuilderCustomizers(builder ->
builder.setServerOption(UndertowOptions.ENABLE_HTTP2, true));
}
}
其中,setLocationForStaticAssets(container);就是设置网站的静态资源的位置。眼看代码是没问题的,唯有debug救我。debug下面的代码:
private void setLocationForStaticAssets(ConfigurableEmbeddedServletContainer container) {
File root;
String prefixPath = resolvePathPrefix();
root = new File(prefixPath + "target/www/");
if (root.exists() && root.isDirectory()) {
container.setDocumentRoot(root);
}
}
通过debug发现,root的路径多了%20的字符导致找不到路径,%20就是空格,将空格去掉再试一试~
果然是这个问题,去掉空格之后就有内容了。
4、结案
看看目录的路径是否带有空格或者中文字符,有的话去掉试试看。
JHipster项目启动后默认的8080主页是空白页面?的更多相关文章
- spring项目启动后,获取bean的方法总结
如果在web项目中,用到定时器的朋友可能会遇到使用spring注解的方式获取bean的时候报空指针的异常.这是就可以使用手工的方法获取spring容器中的bean了. 下面是具体的方法: 1.先说一个 ...
- Springboot 项目启动后执行某些自定义代码
Springboot 项目启动后执行某些自定义代码 Springboot给我们提供了两种"开机启动"某些方法的方式:ApplicationRunner和CommandLineRun ...
- springboot 学习之路 9 (项目启动后就执行特定方法)
目录:[持续更新.....] spring 部分常用注解 spring boot 学习之路1(简单入门) spring boot 学习之路2(注解介绍) spring boot 学习之路3( 集成my ...
- springboot2.X 在项目启动后执行一段自定义代码
场景: 项目需要在项目启动后从数据库初始化一些数据进入redis , 但是没有很适合 的监听器去实现 , 监听 老是在dao初始化之前触发. 解决方法:自定义类实现 ApplicationRunner ...
- 【Spring容器】项目启动后初始化数据的两种实践方案
早期业务紧急,没有过多的在意项目的运行效率,现在回过头看走查代码,发现后端项目(Spring MVC+MyBatis)在启动过程中多次解析mybatis的xml配置文件及初始化数据,对开发阶段开发人员 ...
- Springboot项目启动后自动创建多表关联的数据库与表的方案
文/朱季谦 在一些项目开发当中,存在这样一种需求,即开发完成的项目,在第一次部署启动时,需能自行构建系统需要的数据库及其对应的数据库表. 若要解决这类需求,其实现在已有不少开源框架都能实现自动生成数据 ...
- tomcat正常启动后http://localhost:8080/报错404
病症: tomcat在eclipse里面能正常启动,而在浏览器中访问http://localhost:8080/不能访问,且报404错误.同时其他项目页面也不能访问.关闭eclipse里面的tomca ...
- ecliplse里tomcat正常启动后http://localhost:8080/报错404
如下图所示,新建一个工作区间,添加tomcat之后通过ecliplse启动tomcat之后: 访问http://localhost:8080/出现404: 解决方法: 1.确保tomcat里面所有项目 ...
- Tomcat服务器启动后访问localhost:8080显示404的原因
原因:在eclipse中关联了Tomcat服务器 重点来了,如果你是在eclipse中点击启动按钮启动的Tomcat 那么Tomcat不会默认部署它自己的测试项目(也就是大猫localhost:808 ...
随机推荐
- 谷歌地图api 开发 (转载)
https://www.cnblogs.com/520lin/p/5800024.html
- 调整Linux的最大文件打开数
要调整一下Linux的最大文件打开数,否则squid在高负载时执行性能将会很低.另外,在Linux下面部署应用时,有时候会遇上 Socket/File:Can’t open so many files ...
- shutdown&&isTerminated
shutdownvoid shutdown()启动一次顺序关闭,执行以前提交的任务,但不接受新任务.若已经关闭,则调用没有其他作用.抛出:SecurityException - 如果安全管理器存在并且 ...
- [转帖]amzon最新的产品outposts
2018年12月3日,全球领先的企业软件创新者VMware(NYSE: VMW)发布两款运行于AWS Outposts的全新解决方案预览:VMware Cloud on AWS Outposts与VM ...
- Install .Net Core For CentOS
Install .NET Core SDK Before you start, please remove any previous versions of .NET Core from your s ...
- logback错误日志发送邮件
logback 一.介绍 logback是由log4j的作者开发的一个开源日志组件,用以替代log4j. logback由3个部分组成: ♦ logback-core (基础模块) ♦ logback ...
- 通过jmap查看jvm采用的垃圾收集器
1 tomcat 的PID获得 ps -ef|grep tomcat [root@iZ2zeapch8kbaw4bxnz8vxZ tomcat7]# ps -ef|grep tomcat root ...
- ajax异步请求loading
1.找到一张loading图片 2.添加样式 <style> .loadingWrap{ position:fixed; top:; left:; width:100%; height:1 ...
- sqlserver查询数据库中包含某个字段的所有表和所有存储过程
1.查询包含某字段的所有表 select object_name(id) objName,Name as colName from syscolumns where (name like'%你要查询的 ...
- 解决MySQL Slave 触发 oom-killer
最近经常有收到MySQL实例类似内存不足的报警信息,登陆到服务器上一看发现MySQL 吃掉了99%的内存,God ! 有时候没有及时处理,内核就会自己帮我们重启下MySQL,然后我们就可以看到 dme ...