一些运行在ARM单板电脑上的IoT应用通常会提供RESTful风格的API接口。本次的文章记录如何在本地电脑上通过VS Code的远程开发功能,在树莓派端创建一个SpringBoot工程,并实现调试和运行。

因为之前已经实现了在X86_64平台上用VS Code新建SpringBoot工程使用VS Code的远程开发功能在树莓进行开发。所以这次我们主要参考之前的经验,完成下面的工作。

准备工作

在树莓派上安装JDK11或更高版本

本步骤是在树莓派上执行的安装

如之前文章所述,我的树莓派2B板子的镜像是ubuntu 21.04,因此我要先检查下系统中的java版本:

$ java -version

如果你的系统显示的java jdk版本为11或者更高,可以跳过本步骤。但我的系统提示我未安装任何java程序,好在ubuntu系统给了一些安装提示,因此我只需根据提示输入想要安装的版本命令即可(其他系统可以根据实际情况安装,需要注意是需要安装JDK而非JRE):

$ sudo apt-get install -y openjdk-11-jdk-headless

安装好后再次查看java版本,已经满足要求:

$ java -version
openjdk version "11.0.13" 2021-10-19
OpenJDK Runtime Environment (build 11.0.13+8-Ubuntu-0ubuntu1.21.10)
OpenJDK Server VM (build 11.0.13+8-Ubuntu-0ubuntu1.21.10, mixed mode)

如果之前已经安装了其他版本的Java,则可以在安装新的Java版本后通过update-alternatives命令切换Java版本。

安装VSCode远程服务器端的扩展

本步骤在本地电脑使用VSCode的远程开发能力连接到树莓派端后再进行

首先要用VSCode远程连接到树莓派。然后在Extensions功能下安装扩展到树莓派服务器端。

需要安装的远程扩展分别是Extension Pack for JavaSpring Boot Extension Pack

如图我已经在本地端安装过Extension Pack for Java了,因此我要点击Install in SSH: x.x.x.x我的树莓派端。同理安装Spring Boot Extension Pack扩展到树莓派端。

安装完这两个扩展后切换到ExtensionsSSH: x.x.x.x-INSTALLED分组可以查看远程终端上安装好的扩展。因为这两个扩展包会包含许多其他扩展,因此你会看到下列扩展都已经被自动安装上了。

在树莓派上调试SpringBoot

在安装好树莓派上的Java JDK11和相关的远程VSCode扩展后,就可以像在本地开发SpringBoot工程一样进行工作了。我们可以选择从零新建一个SpringBoot工程,或者git clone一个在其他平台已经开发好的工程。

在开发SpringBoot时我们经常遇到国外Maven仓库源下载速度慢的问题,可以通过修改为国内源解决。

在树莓派端从零新建一个SpringBoot起始工程

大体步骤与之前的文章一致:Ubuntu下使用VS Code创建Spring Boot工程

  • 在VSCode远程连接到树莓派端后,打开命令台(Ctrl+Shift+PF1),输入spring会显示可用的SpringBoot命令,选择Spring Initializr: Create a Maven Project即可。
  • 选择SpringBoot版本,根据需求选择即可,这里我选的是2.5.9,也可以选择较高的版本,只是我比较担心有些依赖会不支持较高的版本。
  • 接下来选择开发语言,我用的是java
  • 然后设置包名和项目名(GroupId和ArtifactID),分别代表项目组织唯一标识符项目唯一的标识符
  • 选择打包类型未Jar
  • 选择Java版本为11,当然也有其他选项,由于VSCode的SpringBoot扩展包要求最低版本为11,因此我之前选择配置JDK11。这个版本限制可以通过安装低版本的扩展解决。
  • 接下来选择初始工程的依赖,根据需求选择即可。
  • 最后选择工程保存的目录以完成创建。啰嗦下哈:这里选择的目录是树莓派端的保存目录,虽然我们此时是在本地电脑上的VSCode界面,但是实际正在远程连接树莓派端

或者打开一个已有的工程

也可以直接clone我之前在x86_64平台系统上创建的示例工程,然后直接打开:

$ git clone https://github.com/congtou001/springboot-demo.git

由于该工程引用了Lombok依赖,并且使用了@Data注释,打开该工程后发现注释无法正常使用。可能时你的VSCode远程服务器端没有安装Lombok扩展,需要安装该扩展后才可以正常使用注解。

调试并运行SpringBoot

这里的步骤和在本地VSCode界面一致。在EXPLORERSPRING BOOT DASHBOARD分组下找到打开的的SpringBoot项目,点击项目名右侧的Debug按钮即可开始调试。待项目编译完并开始运行后,便可以在本地的任意浏览器打开该项目的页面了。

下图显示了在本地电脑上远程调试树莓派项目的界面。由于项目的编译和运行均是在树莓派端运行,而我的树莓派又是比较旧的2B版本,因此速度会慢不少。

可能遇到的问题: 我在第一次调试该项目的时候直接导致树莓派的1G内存瞬间跑满,结果卡死了远程服务。我的解决方案是为树莓派的ubuntu系统创建了一个1G大小的swap交换内存

下图是在树莓派2B端运行SpringBoot demo工程的api接口返回结果

遇到的问题

修改maven源镜像到国内

由于Maven默认的settings.xml使用官方仓库地址,因此国内下载依赖很慢,可以按照以下步骤配置为国内镜像地址。

首先找到默认的settings.xml文件,如果是linux系统下,一般是在用户目录的.m2文件夹内:~/.m2/settings.xml。如果没有,可以新建一个。

然后打开或新建该.xml配置文件来设定国内镜像地址,在<mirrors>标签内配置:

<mirror>
<id>aliyun-public</id>
<mirrorOf>*</mirrorOf>
<name>aliyun public</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror> <mirror>
<id>aliyun-central</id>
<mirrorOf>*</mirrorOf>
<name>aliyun central</name>
<url>https://maven.aliyun.com/repository/central</url>
</mirror> <mirror>
<id>aliyun-spring</id>
<mirrorOf>*</mirrorOf>
<name>aliyun spring</name>
<url>https://maven.aliyun.com/repository/spring</url>
</mirror> <mirror>
<id>aliyun-spring-plugin</id>
<mirrorOf>*</mirrorOf>
<name>aliyun spring-plugin</name>
<url>https://maven.aliyun.com/repository/spring-plugin</url>
</mirror> <mirror>
<id>aliyun-apache-snapshots</id>
<mirrorOf>*</mirrorOf>
<name>aliyun apache-snapshots</name>
<url>https://maven.aliyun.com/repository/apache-snapshots</url>
</mirror> <mirror>
<id>aliyun-google</id>
<mirrorOf>*</mirrorOf>
<name>aliyun google</name>
<url>https://maven.aliyun.com/repository/google</url>
</mirror> <mirror>
<id>aliyun-gradle-plugin</id>
<mirrorOf>*</mirrorOf>
<name>aliyun gradle-plugin</name>
<url>https://maven.aliyun.com/repository/gradle-plugin</url>
</mirror> <mirror>
<id>aliyun-jcenter</id>
<mirrorOf>*</mirrorOf>
<name>aliyun jcenter</name>
<url>https://maven.aliyun.com/repository/jcenter</url>
</mirror> <mirror>
<id>aliyun-releases</id>
<mirrorOf>*</mirrorOf>
<name>aliyun releases</name>
<url>https://maven.aliyun.com/repository/releases</url>
</mirror> <mirror>
<id>aliyun-snapshots</id>
<mirrorOf>*</mirrorOf>
<name>aliyun snapshots</name>
<url>https://maven.aliyun.com/repository/snapshots</url>
</mirror> <mirror>
<id>aliyun-grails-core</id>
<mirrorOf>*</mirrorOf>
<name>aliyun grails-core</name>
<url>https://maven.aliyun.com/repository/grails-core</url>
</mirror> <mirror>
<id>aliyun-mapr-public</id>
<mirrorOf>*</mirrorOf>
<name>aliyun mapr-public</name>
<url>https://maven.aliyun.com/repository/mapr-public</url>
</mirror>

重新编译或调试就会从国内maven镜像仓库下载依赖了。

为树莓派端新建SWAP交换内存

添加swap文件:

$ mkdir swap
$ cd swap
$ sudo dd if=/dev/zero of=sfile bs=1024 count=1000000

转化并激活为swap文件:

$ sudo mkswap sfile
$ sudo swapon sfile

@Data注解无效

若添加了Lombok依赖后依然无法使用@Data等注解自动生成Setter和Getter,则可能是VSCode忘了安装扩展Lombok Annotations Support for VS Code。在Extensions中安装该扩展即可。注意区分是安装到本地还是远程。

本文参考

同时发布于:在树莓派上开发SpringBoot 之使用VSCode远程开发

在树莓派上开发SpringBoot 之使用VSCode远程开发的更多相关文章

  1. VSCode 远程开发(带免密)

    VSCode 远程开发(带免密) 简介 Visual Studio Code(以下简称 VS Code)从1.35.0版本正式提供可以在本地编辑远程开发环境的文件的功能,具体实现如下图 安装完成Rem ...

  2. vscode 远程开发安装

    1 首先windows 有ssh  程序 2 没有的话就直接使用git  bash 登录到远程服务器开发机上 3 再开一个Git bash  执行 ssh-keygen.exe   生成秘钥    然 ...

  3. vscode远程开发安装

    https://www.cnblogs.com/xiaoqi/p/vs-code-remote.html ============================= https://blog.csdn ...

  4. Flask15 远程开发环境搭建、安装虚拟机、导入镜像文件、创建开发环境、pycharm和远程开发环境协同工作

    1 安装VM虚拟机 待更新... 2 导入镜像文件 待更新... 3 启动虚拟机 4 远程连接虚拟机 4.1 安装xShell软件 待更新... 4.2 创建一个新的连接 4.2.1 在虚拟机中获取虚 ...

  5. VSCode 配置阿里云CentOS 7.6 远程开发

    配置步骤 一.windows 10 开发机配置 windows 10 1809后支持ssh命令 1.生成ssh密钥.使用以下命令,先生成本地公钥和私钥ssh-keygen -t rsa -b 4096 ...

  6. Visual Studio Code 远程开发探秘

    摘要: IDE新时代! 作者:SHUHARI 的博客 原文:Visual Studio Code 远程开发探秘 Fundebug按照原文要求转载,版权归原作者所有. 在以前的文章 有趣的项目 - 在浏 ...

  7. 转: NetBean 远程开发的好文2 --> 工欲善其事,必先利其器系列--Netbeans之远程开发

    转自:  http://www.cnblogs.com/zuoca/archive/2012/07/09/Remote_Development_With_Netbeans_origin.html 实践 ...

  8. 转: 工欲善其事,必先利其器系列--Netbeans之远程开发

    转自: http://www.cnblogs.com/zuoca/archive/2012/07/09/Remote_Development_With_Netbeans_origin.html 工欲善 ...

  9. vscode远程调试c++

    0.背景 最近在学习linux webserver开发,需要在linux下调试自己的C/C++代码,但是linux下不像在windows下,直接Visio Studio或者其它集成开发环境那么方便,现 ...

随机推荐

  1. 【LeetCode】744. Find Smallest Letter Greater Than Target 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 线性扫描 二分查找 日期 题目地址:https:// ...

  2. 【剑指Offer】调整数组顺序使奇数位于偶数前面 解题报告(Python)

    [牛客网]调整数组顺序使奇数位于偶数前面 解题报告 标签(空格分隔): 牛客网 题目地址:https://www.nowcoder.com/questionTerminal/beb5aa231adc4 ...

  3. Java不可变类与final类

    概念 Java的不可变类是指八个基础类型的包装类和String,他们的数据成员是不可变的.使用加法等操作时,其实是创建了一个新的对象. Java的final类是对类用关键字final进行修饰,说明该类 ...

  4. PHP 的扩展类型及安装方式

    扩展类型 底层扩展(基于C语言): PECL 上层扩展(基于PHP 语言): PEAR Composer PECL # 查找扩展 $ pecl search extname # 安装扩展 $ pecl ...

  5. SpringBoot 原理分析、监控、项目部署

    目录 SpringBoot 监控 概述 使用 SpringBoot Admin 概述 使用 SpringBoot 项目部署 SpringBoot 监控 概述 SpringBoot 自带监控功能 Act ...

  6. win 10 遇到某文件一直在占用导致无法关闭,或者去任务管理器找不到服务怎么办?具体解决

    1. 打开 cmd 指令框 ,输入 perfmon 回车 就会出来这个 点击  打开资源监视器, 在句柄搜索框搜索 那个占用资源的文件或软件关键词 ,如下 搜索酷狗 将有关的选项,右键选中后 打开菜单 ...

  7. 华为云 Kubernetes 管理员实训 五 课后作业

    练习1 部署一个Deployment应用,使用secret普通卷,该应用启动依赖此secret. Deployment的名称为<hwcka-005-1-你的华为云id> 将所用命令.创建的 ...

  8. Go语言实战爬虫项目

    Go语言爬虫框架之Colly和Goquery Python爬虫框架比较多有requests.urllib, pyquery,scrapy等,解析库有BeautifulSoup.pyquery.Scra ...

  9. SSRF服务器端请求伪造漏洞基础

    0x00 思考 1.什么是SSRF漏洞?2.SSRF漏洞的利用方式3.SSRF漏洞绕过4.SSRF漏洞加固 0x01 什么是SSRF漏洞 定义:SSRF漏洞,中文全称为服务端请求伪造漏洞,是一种由攻击 ...

  10. 基础概念(1):cc是什么

    cc是什么? "人和程序,有一个能跑就行",意思是上班写代码,要么程序运行起来,要么人滚蛋.程序怎么才能运行起来呢?先要写出来,再编译成可执行的二进制,之后就可以跑起来了.这里重要 ...