在上一篇,我们已经脱掉了她华丽的外衣,你不用再添加任何华而不实的装饰,一切都交给CLI来搞定。树莓派WEB开发运行环境之JAVA篇,只需5个步骤:

  • 安装JAVA开发包
  • 安装和运行maven
  • 创建JAVA WEB工程
  • 使用Struts 2框架
  • 做你自己的VIM

安装JAVA开发包

树莓派基于arm架构,因此需要安装JDK for ARM,不过你不用担心,聪明的树莓派已经为你预装好了。

通过ssh连接树莓派,在终端执行以下命令就可以打印出你的java版本:

$ java -version

Java版本信息

如果你的树莓派着实没有的话,可选择以下两种方式安装。

① 使用树莓派提供的JDK

你可以使用 apt 包管理器来安装:

$ sudo apt-get update

$ sudo apt-get upgrade

$ sudo apt install oracle-java8-jdk

在国内使用 apt 访问树莓派官方的源要等灯、等灯、等灯……

我尝试修改为国内的镜像速度要快很多,但对于这个JDK for ARM,好像非得去官方的源,好在你可以趁这个时间上个厕所、扭扭屁股。

如果着实很慢的话,可以考虑从Oracle官网下载。

② 使用Oracle官网的JDK

如果你因为各种理由需要使用Oracle官方的JDK,可以参考下面的步骤:

下载官方安装包

打开Oracle官网(http://www.oracle.com),鼠标依次通过 Menu -> Products -> Java,点击Download Java(JDK) for Developers,打开Java SE Download页面,点击左侧菜单中的Java Embedded,在New Downloads中找到“JDK 8u201 for ARM”并点击进入。

Oracle官网JDK下载界面

点击 Accept License Argeement,下载第一个 Linux ARM 32 Hard Float ABI,虽然树莓派的处理器是64 bit,但她的Raspbian操作系统是32 bit的,所以你要下载32位的版本。

你需要把这个文件下载到树莓派上而不是你使用的电脑上。可以先在自己的电脑上下载,然后查看下载的地址并复制这个地址,在树莓派的终端里执行以下命令就可以把文件下载到树莓派上:

$ wget 你复制的下载地址

如果你没有 wget 的话,你应该知道怎么用 apt 来安装。

一定要复制下载时的地址,而不是Oracle官网上那个静态的超链接地址,不然你会得到一个很小的不能用的文件。

解压缩JAVA安装包

下载完毕后,你会得到一个名字为 jdk-8u201-linux-arm32-vfp-hflt.tar.gz的文件,而且可能屁股后面还跟着一大串?AuthParam=xxxxxxx,如果有的话使用 mv 命令把它修改掉就可以了:

$ mv jdk-8u201-linux-arm32-vfp-hflt.tar.gz?AuthParam=xxxxxxx jdk-8u201-linux-arm32-vfp-hflt.tar.gz

<!--
当然你不用一个字一个字的输入那么长的文件名,只要输入jdk,然后按 Tab 键,linux终端会匹配你已经输入的jdk三个字符,然后自动将后面的一大串补全。
对于其他所有的Linux命令和文件名,都可以用 Tab 来补全,当你按一下 Tab 键没有补全的情况下,你可以尝试按两次,看看会发生什么。
-->

然后使用以下命令解压缩:

$ tar zxvf jdk-8u201-linux-arm32-vfp-hflt.tar.gz

你会得到一个名为 jdk1.8.0_201 的目录,java命令就在这个目录下的 bin 目录下。

测试和配置JAVA运行环境

在终端执行以下命令:

$ jdk1.8.0_201/bin/java -version

终端将打印出如下内容:

新安装的Java版本信息

这时你可能发现,如果直接在终端执行 java -version 命令,系统会提示找不到命令,或者打印出的还是你旧的的 java 版本信息,这是因为你还没有告诉终端,你新的 java 命令在哪里。

你可以把这个 jdk1.8.0_201 目录放到 /opt下面:

$ sudo mv jdk1.8.0_201 /opt

然后为新的 java 命令创建软连接:

$ sudo ln -s /opt/jdk1.8.0_201/bin/java /usr/local/bin/java

还有 javac 命令,也是你需要的

$ sudo ln -s /opt/jdk1.8.0_201/bin/javac /usr/local/bin/javac

如果你的系统中原本已经存在其他版本的java,建议你把它删除,或者把 /usr/bin中现有的java软连接修改为其他名字,否则会发生冲突。

<!--
使用apt删除软件包的命令为:
$ sudo apt purge 要删除的软件包名
-->

这时你在终端里直接输入 java -version 命令,终端就会打印出最新的java版本信息。

至此,你的官方版的JAVA开发包就安装完成了。

安装和运行maven

Maven是apache下的一个开源项目,用于java工程管理,如果你之前没有用过它,那我给你介绍再多都是白搭,不如我们先来做一遍,然后你一定会明白maven是个什么鬼。

maven基于java运行环境,它的安装非常简单。

① 下载Maven安装包

打开apache官网(http://www.apache.org),拉到页面最底部,在APACHE PROJECT LIST中的 M 中找到Maven。

Apache官网底部项目清单

进入Maven的官网,你很容易找到 Download连接,点击进入,我们选择Files中的第一个 Binary tar.gz archive 来下载:

Maven下载链接清单

右击下载链接,把地址拷贝下来,然后到树莓派终端里使用 wget 命令:

$ wget 你拷贝的下载地址

下载完成后你将得到一个名为 apache-maven-3.6.0-bin.tar.gz 的文件。

② 解压缩Maven安装包

用 tar 命令解压缩:

$ tar zxvf apache-maven-3.6.0-bin.tar.gz

你将得到一个名为 apache-maven-3.6.0 的新目录。

③ 测试和配置Maven环境

把解压缩得到的新目录移动到 /opt 目录下:

$ sudo mv apache-maven-3.6.0 /opt

Maven主要使用mvn命令,所以要为它建立软链接,这样就可以在终端直接输入mvn(而不用加路径)来使用这个命令:

$ sudo ln -s /opt/apache-maven-3.6.0/bin/mvn /usr/local/bin/mvn

在终端直接执行 mvn -version 命令,终端会打印出如下内容:

Maven版本及运行环境

你一定看明白了,第一行是 Maven 的版本信息,第二行是 Maven 所在的目录,第三行是你的 Java 版本信息,第四行是语言和编码,最后一行是操作系统的信息。

至此,你的 Maven 就安装完成了,接下来可以用它来创建你的 JAVA WEB 工程。

创建JAVA WEB工程

① 使用Maven创建webapp工程

在终端里定位到你希望创建JAVA WEB工程的目录,然后执行以下命令:

$ mvn archetype:generate

-DarchetypeGroupId=org.apache.maven.archetypes

-DarchetypeArtifactId=maven-archetype-webapp

-DgroupId=cn.newssit

-DartifactId=huidaogu

其中 archetype:generate 是从原型创建工程,所谓原型就是工程模板,方便我们创建不同的工程,你也可以定义一个自己的原型。

DarchetypeGroupId定义了原型的所属组织

DarchetypeArtifactId定义了原型工件的ID,我们这里使用webapp原型。

DgroupId为你自己的组织ID

DartifactId就是你想要创建的工程名字,比如我的是huidaogu

DgroupId和DartifactId也将组合成为你的java包路径

命令执行完毕后,你将看到Maven为你创建了一个标准的webapp工程目录,主目录名就是你的DartifactId,其下面有一个pom.xml文件,用于配置和管理你的工程,还有src、target两个目录,顾名思义,src里面是你的源码,target里面是编译后的文件。

② 修改pom.xml文件

使用Maven管理Java工程,你不需要下载任何所依赖的jar包,只需要在pom.xml文件里进行相应设置,Maven会自动帮你下载,能够避免因为缺包和包的版本带来的各种奇葩错误。

我们首先给它加上一个jetty插件,这个插件可以让你把用Java开发的WEB工程运行起来,没错,和你所熟悉的Tomcat是一样的功能。

使用 vim 打开pom.xml文件,找到<plugins>标签,在它下面增加一个<plugin>,内容如下:

<plugin><groupId>org.eclipse.jetty</groupId><artifactId>jetty-maven-plugin</artifactId><version>9.4.15.v20190215</version><configuration><webApp><contextPath>/${project.build.finalName}</contextPath></webApp><stopKey>CTRL+C</stopKey><stopPort>8999</stopPort><reload>manual</reload><scanIntervalSeconds>2</scanIntervalSeconds></configuration>
</plugin>

如果你编辑好了,在终端里它应该是酱紫的:

pom.xml配置插件

它的意思是Maven要添加一个eclipse组织的jetty-maven-plugin插件,版本号是9.4.15,把这个服务插件配置为Ctrl+C停止,手动重启,也就是按回车键重启。

当然,你也可以使用tomcat插件,不要问我为什么用这个而不用那个,我不会跟你探讨这种无聊至极的问题,没有原因,我是实践派,只要满足用即可。

③ 创建index.jsp文件

Maven将jsp文件放在src/main/webapp下面,而且会自动帮你创建一个index.jsp文件,你只需要找到它并且编辑它就可以了。

我们只是测试一下Maven所管理的工程是否能用,所以你怎么编辑index.jsp的内容都没关系,只要符合jsp文件的规范,能让它运行即可。我是这样写的:

<!DOCTYPE html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<html><head><meta charset="UTF-8"><title>Huidaogu</title></head><body><h2>Hello JSP!</h2></body>
</html>

④ 执行mvn命令

然后激动人心的时刻就要来临了,确定你现在处于Maven创建的工程根目录下,也就是pom.xml文件所在的目录,比如我的要在huidaogu目录下,然后执行下面的命令:

$ mvn jetty:run

然后Maven会按照pom.xml文件的要求去下载所需要的各种包和插件,第一次执行这个命令可能需要花点时间,你会看到屏幕上不断跳出来Downloading的提示,也许你又需要去上个厕所或扭一会儿屁股。

等Maven执行完毕,它会有大致如下的提示:

jetty启动信息

意思就是Jetty Server已经启动,并允许在终端里通过按回车键重新启动。

⑤ 测试web页面

打开浏览器,输入如下地址:

http://树莓派的IP地址:8080/你的工程名字

如果一切正常的话,你将会看到index.jsp的内容:

Hello JSP页面

测试完成后,你可以使用Ctrl+c组合键退出jetty服务,或者你也可以暂时不退出,再打开一个新终端的并连接到树莓派,以进行下面的操作。

使用Struts 2框架

也许你已经学习了Java开发里大名鼎鼎的SSH框架,那么你可以继续使用它们来构建你的工程。下面我们写一个简单的Struts2程序,来验证一下它是完全可以正常工作的。

① 添加Struts2的Jar包依赖

用vim修改pom.xml文件,在<dependencies>下面增加一个<dependency>标签:

<dependency><groupId>org.apache.struts</groupId><artifactId>struts2-core</artifactId><version>2.5.20</version>
</dependency>

Struts2当前最新版本为2.5.20,你也可以改为你所需要的版本。

看到了么,添加一个依赖只需要像这样就可以了,Maven会自动根据你的pom.xml下载所需要的文件。

② 添加Struts2 Servlet过滤器

在你的src/main/webapp下面还有一个WEB-INF目录,里面有一个web.xml文件,你需要在这个文件里设置Strtus2的Servlet过滤器。

用vim把你的web.xml文件修改为如下内容:

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4"xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"><display-name>你的工程名字</display-name><welcome-file-list><welcome-file>index</welcome-file></welcome-file-list><filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping>
</web-app>

③ 创建struts.xml文件

在src/main/目录下新建一个resources目录,然后在这个目录下使用vim创建一个struts.xml文件,文件的内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN""http://struts.apache.org/dtds/struts-2.5.dtd">
​
<struts><constant name="struts.devMode" value="true" /><package name="你的工程名字" extends="struts-default"><action name="index"><result>/index.jsp</result></action></package>
</struts>

④ 编译整个工程

如果你刚才使用Ctrl+c组合键停止了你的jetty服务器,那么你可以再次使用 mvn jetty:run 命令来启动它,以编译和更新你刚刚所做的全部修改。

如果你刚才没有停下jetty服务,而是在新打开的终端进行的上述操作,那么你现在可以先编译整个工程:

$ mvn compile

编译完成后,回到之前运行jetty的终端里,按回车键重启jetty服务,也可以使你刚刚所做的全部修改生效。

⑤ 测试运行

最后在浏览器里输入如下地址来测试你的Struts2:

http://树莓派的IP地址:8080/你的工程名字/index.action

你依然会看到和上次一样的页面,不过内涵已经不同了,你输入的地址(index.action)会提交给Struts2处理,由Strtus2通过struts.xml文件找到index.jsp,然后再将这个页面返回给浏览器。

如果你想深入学习Maven和Struts2以及其他Java框架的话,建议你直接到他们的官方网站,那里有全世界最新、最详实的文档,能够满足你所有的好奇心。

慧捣鼓工作室的首要理念是独立思考,作为独立思考的首要条件,就是你要看原版的官方文档,基于此来做出你自己的思考。

做你自己的VIM

你一定发现了,在CLI下面做开发,离不开VIM或者emacs之类的编辑器,在脱掉树莓派的外衣之后,你可以为vim增加点装饰,让你的开发更有乐趣一点,比如下面这样看上去是不是更性感一点:

我的VIM开发环境

使用vim丰富的插件,只需要简单的几个操作就可以搞定。

① 安装Vundle插件管理器

在树莓派终端执行以下命令从github获取Vundle插件:

$ git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim

② 创建vim配置文件

在你的用户主目录下创建.vimrc文件:

$ vim ~/.vimrc

输入以下内容:

"Vundel插件管理器
set nocompatible
filetype off
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
"以下是要安装的插件
Plugin 'VundleVim/Vundle.vim'
Plugin 'scrooloose/nerdtree'
Plugin 'jistr/vim-nerdtree-tabs'
Plugin 'artur-shaik/vim-javacomplete2'
call vundle#end()
filetype plugin indent on
​
""""""""""""""""""""""""""""""""""""""""""""""""
" 显示相关
""""""""""""""""""""""""""""""""""""""""""""""""
"配色方案
set t_Co=256
set background=dark
"显示行号
set nu
"突出显示当前行
set cursorline
hi CursorLine cterm=NONE ctermbg=black
"自动缩近
set autoindent
set cindent
"Tab键的宽度
set tabstop=4
"统一缩近为4
set softtabstop=4
set shiftwidth=4
"不用空格代替制表符
set noexpandtab
"在段和行开始处使用制表符
set smarttab
syntax enable
"允许代码折叠
set foldmethod=indent
set foldlevel=99
"空格键折叠
nnoremap <space> za
​
""""""""""""""""""""""""""""""""""""""""""""""""
"插件设置
""""""""""""""""""""""""""""""""""""""""""""""""
"Java代码补全
autocmd FileType java setlocal omnifunc=javacomplete#Complete
"NERDTree树形文件导航插件
nnoremap <silent><F10> :NERDTree<CR>
​
""""""""""""""""""""""""""""""""""""""""""""""""
"其他设置
""""""""""""""""""""""""""""""""""""""""""""""""
filetype plugin indent on
set completeopt=longest,menu
"编码
set enc=utf-8
set fencs=utf-8,gb18030,gbk,gb2312,cp936,usc-bom,shift-jis
set termencoding=utf-8
set encoding=utf-8
set fileencodings=utf-8,ucs-bom,cp936
set fileencoding=utf-8
语言设置
set langmenu=zh_CN.UTF-8:

你可以直接拷贝粘贴到vim中,然后保存并关闭vim。

③ 安装插件

在安装插件之前,我们要先用apt安装vim-nox软件包,树莓派默认安装的vim是不提供python支持的,而有些插件需要这个支持,所以可以通过安装vim-nox包来提供python支持,或者重新编译安装vim,编译安装操作之前咱们说过,等把眼前的东西玩腻了再去搞。

$ sudo apt install vim-nox

安装完成之后再启动vim就是vim-nox版本。

刚才我们在vim的配置文件里定义了几个要安装的插件,分别是Vundle插件管理器、nerdtree树形结构和Java代码补全插件,现在你可以重新用vim打开刚才新建的配置文件,然后在普通模式下执行 :PluginInstall 命令,vim会自动下载和安装这些插件:

VIM安装插件

下载需要一些时间,特别是Java代码补全插件,待安装完毕后,屏幕左下角会提示 Done!

然后你就可以通过 :q 命令退出vim了。如果中间安装失败,可以按 l 键查看日志,或者重新安装。

④ VIM开发环境初体验

现在你可以用vim写一个java类,体验一下CLI下的欢乐开发之旅。

首先创建包路径,也就是你用Maven创建工程时定义的,比如我的是cn.newssit.huidaogu。

$ mkdir src/main/java/

$ mkdir src/main/java/cn

$ mkdir src/main/java/cn/newssit

$ mkdir src/main/java/cn/newssit/huidaogu

$ mkdir src/main/java/cn/newssit/huidaogu/model

$ vim src/main/java/cn/newssit/huidaogu/model/User.java

然后输入你的代码,我的测试代码如下:

package cn.newssit.huidaogu.model;
​
public class User {private int id;private String userName;public int getId() {return id;}
​public void setId(int id) {this.id = id;}
​public String getUserName() {return userName;}
​public void setUserName(String userName) {this.userName = userName;}
}

在这个过程中,你可以体验vim配色方案,当前行的高亮显示。你可以按F10来打开侧边的树形目录,使用 j k 选择目录或文件,按回车键打开。你还可以通过Ctrl+x Ctrl+o组合键来体验Java自动补全功能:

树莓派上用VIM打造的JAVA开发环境

以上只是vim的一些基本设置,如果需要详细了解,vim官网(http://www.vim.org)提供了各种丰富的文档和推荐书籍。此外网上有许多好用的插件、配置方案,还有配色方案比如solarized等,可以去github等网站查找。

当然,以上方法不只适用于树莓派,其他Linux发行版和MacOS也可以参照执行。


关联文章推荐:

如何给树莓派安装操作系统​zhuanlan.zhihu.com

树莓派初次启动后的设置​zhuanlan.zhihu.com

树莓派入门必会的20个Linux命令​zhuanlan.zhihu.com

如何给树莓派搭建WEB开发运行环境之LAMP篇​zhuanlan.zhihu.com

web自动化如何在不同浏览器运行_如何给树莓派搭建WEB开发运行环境之JAVA篇相关推荐

  1. linux搭建python运行环境_centos运行.py centos5.5下搭建python开发运行环境 - Linux - 服务器之家...

    centos运行.py centos5.5下搭建python开发运行环境 发布时间:2017-04-28 来源:服务器之家 我们知道ython可以在windows.linux.android运行了,但 ...

  2. 如何给树莓派搭建WEB开发运行环境之JAVA篇

    在上一篇,我们已经脱掉了她华丽的外衣,你不用再添加任何华而不实的装饰,一切都交给CLI来搞定.树莓派WEB开发运行环境之JAVA篇,只需5个步骤: 安装JAVA开发包 安装和运行maven 创建JAV ...

  3. 2022年,树莓派搭建web服务器,加各种bug的解决

    2022年,树莓派搭建web服务器,加各种bug的解决 配置: 1.树莓派3B+ 2.树莓派系统:2022-1-28 桌面版 文章目录 2022年,树莓派搭建web服务器,加各种bug的解决 一.首先 ...

  4. web自动化如何在不同浏览器运行_您如何使用Selenium来计算自动化测试的投资回报率?...

    跨浏览器测试是一种测试,需要大量的精力和时间.通过不同的浏览器,操作系统,设备,屏幕分辨率测试Web应用程序,以评估针对各种受众的Web内容呈现的过程是一项活动.特别是如果手动处理.使用Seleniu ...

  5. github项目怎么运行_利用 GitHub 从零开始搭建一个博客

    "NightTeam",一个值得加星标的公众号. 趁着周末,搭建了一下 NightTeam 的官方博客和官方主页,耗时数个小时,两个站点终于完工了. 由于 NightTeam 的域 ...

  6. 树莓派 触摸屏_如何用树莓派搭建一个颗粒物(PM2.5)传感器

    用树莓派.一个廉价的传感器和一个便宜的屏幕监测空气质量. -- Stephan Tetzel(作者) 大约一年前,我写了一篇关于如何使用树莓派和廉价传感器测量 空气质量 的文章.我们这几年已在学校里和 ...

  7. web自动化如何在不同浏览器运行_从理论到工具:带你全面了解自动化测试框架...

    软件行业正迈向自主.快速.高效的未来.为了跟上这个高速前进的生态系统的步伐,必须加快应用程序的交付时间,但不能以牺牲质量为代价.快速实现质量是必要的,因此质量保证得到了很多关注.为了满足卓越的质量和更 ...

  8. web自动化如何在不同浏览器运行_测试冷知识科普:使用Selenium来计算自动化测试的投资回报率...

    跨浏览器测试是一种测试,需要大量的精力和时间.通过不同的浏览器,操作系统,设备,屏幕分辨率测试Web应用程序,以评估针对各种受众的Web内容呈现的过程是一项活动. 特别是如果手动处理,使用Seleni ...

  9. web自动化如何在不同浏览器运行_自动化决策环节的“心脏”将如何与众不同?...

    原标题:自动化决策环节的"心脏"将如何与众不同? 原宝钢研究院首席研究员郭朝晖博士认为:自动化本质是感知.决策和执行的统一 自动化的理论基础是控制论.控制论诞生时,控制论之父维纳思 ...

最新文章

  1. R语言ggplot2可视化箱图(boxplot)时忽视异常值(outlier)并重新分配坐标轴的范围是的可视化的箱图可以有效显示箱体实战
  2. 便利删除_全家便利官方道歉,我们深扒了来龙去脉
  3. spring boot报错Invalid numeric value: Leading zeroes not allowed
  4. Equipment download - generic inbound 和mapping处理逻辑分析
  5. Oracle 修改SYS、system用户密码
  6. 如何在 ASP.Net Core 中使用 MediatR
  7. 安装Docker step by step
  8. Linux namespace概述
  9. 【loj2585】【APIO2018】新家
  10. php正则表达式 n,CFC4N小试php正则表达式
  11. 爬虫智能解析库 Readability 和 Newspaper 的用法
  12. MATLAB信号处理之连续时间系统的时域分析
  13. VCAP5-DCA – What’s new?
  14. jsp小区停车收费管理系统
  15. Spark入门程序(idea,scala)
  16. 关于Android 4.4(华为)调用系统相机问题
  17. OpenCV批量处理图片
  18. CSS去除图片基准线
  19. 【高斯 GANSS 键盘】 GS87-D 设置指南
  20. 人生忠告一共给所有女人和男人

热门文章

  1. 一个完整的html文件包含哪些标签,HTML基础有哪些单标签
  2. 使用java理解程序逻辑 第十二章_Java多线程中锁的理解与使用(二)
  3. axi dma 寄存器配置_STM32 ADC多通道转换的DMA传输示例
  4. 循环机换变速箱油教程_汽车变速箱油啥时更换?重力换和循环机换有啥区别?注意啥?...
  5. WP7有约(六):AppBarUtils使用指南
  6. 【JavaScript】数学计算的函数与数字的格式化
  7. 当配置 DispatcherServlet拦截“/”,SpringMVC访问静态资源的三种方式
  8. 多链路负载均衡及冗余
  9. 使用JSON的RESTful云数据库
  10. IDEA部署项目和多余的项目删掉的演示