ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

记一次SpringNative的尝鲜以及踩坑记录

2021-07-14 09:02:04  阅读:410  来源: 互联网

标签:Files 17763.0 x86 记录 尝鲜 Kits Program SpringNative


前段时间,Spring官方推出了SpringNative项目,它需要依赖GraalVM的Native-Image功能,详细的内容请参考官方网站:https://spring.io/blog/2021/03/11/announcing-spring-native-beta

那么接下来就说说我的项目运行过程

首先是创建项目,这部分很简单,应该不需要多做说明,在IDEA中新建Spring项目,在选择依赖的时候勾选SpringNative即可勾选SpringNative依赖
但是值得一题的是,SpringNative和SpringBootDevTools是不兼容的,如果勾选这个依赖,那么项目打包的时候就会报错,如图:构建报错
处理方法倒也简单,只要把SpringBoot DevTools的依赖从pom.xml中删除即可。
然后接下来简单写个Controller

@RestController
public class TestController {

    @RequestMapping("/test/{id}")
    public String test(@PathVariable Integer id){
        return id + "";
    }
}

直接打包程序,结果如图报错
尽管此时GraalVM已经安装,环境变量也已经配置,但是JDK1.7以后安装包会在windows\System32中生成快捷方式,并且PATH环境变量中还有个C:\Program Files\Common Files\Oracle\Java\javapath
这个路径也必须删除,再将JAVA_HOME改为GraalVM的根目录即可

这里说下,我在测试时配置完变量后重启IDEA后并没有生效,最终是重启系统后才生效的

那么,环境已经搭建完了,我们可以打包运行项目了,才怪,你以为这就结束了?仅仅只是这样是不够的,项目打包过程中还需要依赖MSVC环境,缺少环境则会报错:Default native-compiler executable ‘cl. exe’ not found via environment variable PATH
报错

这个可以通过Virtual Studio安装MSVC解决,安装时勾选这些即可MSVC环境安装
吐槽一句,VS的占用是真的离谱,即使只勾选这几个组件,也需要占用7.8G的空间,而且还是C盘。

安装完成后,需要将C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.16.27023\bin\HostX64\x64填入环境变量。
本以为这样就算完事了,结果并没有,编译时仍然会报错,Error compiling query code (in C:\Users\xxx\AppData\Local\Temp\SVM-8246985……
报错
看样子还少了一些环境变量,后来在其他人的博客中发现了解决方案
https://blog.csdn.net/q412086027/article/details/113878426
原来还缺少了LIB和INCLUDE变量

LIB=C:\Program Files (x86)\Windows Kits\10\Lib\10.0.17763.0\um\x64;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.17763.0\ucrt\x64;C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.16.27023\lib\x64;
INCLUDE=C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\shared;C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.16.27023\include

将以上环境以及依赖全部配置完毕后,项目终于可以正常打包了
输出目录
不得不说这个编译速度是真的慢,像这样一个demo编译起来都花费了5分钟多,如果项目足够大的话,编译的过程估计会令人抓狂。
可以看到,target目录下除了常规的jar包以外,还有几个dll和exe,而这个demo.exe就是SpringNative打包后的程序,双击便可以直接运行
项目启动
再通过PostMan访问接口,也是可以正常访问的
Postman访问接口

多出的几个dll文件目前用途不明,exe文件换到别的路径下不依赖dll也是可以正常运行的,只不过不清楚是否是我操作的问题,又或者是SpringNative的bug,项目的启动的速度并没有达到官网所说的小于100毫秒,不过速度相比从jar包运行确实有少量提升

标签:Files,17763.0,x86,记录,尝鲜,Kits,Program,SpringNative
来源: https://blog.csdn.net/qq_37431622/article/details/118718884

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有