在上一篇,我们已经脱掉了她华丽的外衣,你不用再添加任何华而不实的装饰,一切都交给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也可以参照执行。

如何给树莓派搭建WEB开发运行环境之JAVA篇相关推荐

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

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

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

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

  3. 搭建大数据运行环境之二

    前言 上篇文章咱们将大数据相关的一些组件都集成安装在了一个docker中 搭建大数据运行环境之一 这篇文章咱们继续 启动下该docker中的大数据相关的组件 将大数据运行环境跑起来 上篇文章的几个注意 ...

  4. 从零开始搭建web开发环境

    从零开始搭建web开发环境 一.安装浏览器 二.安装编辑器 三.安装nvm管理工具 1.安装及配置 2.常用命令 四.安装npm包管理器 五.nodemon工具 六.安装Git工具 七.安装yarn包 ...

  5. .net core 2.0学习笔记(一):开发运行环境搭建

    期待已久的.net core 2.0终于发布了!大家等的花儿都谢了. 不过比预期提前了一个多月,这在微软历史上还真的不多见.按照历史经验看,2.0版本应该比较靠谱,我猜这也是社区非常火爆的原因吧.下面 ...

  6. Python PyCharm Django 搭建web开发环境

    Python & PyCharm & Django 搭建web开发环境 一.安装软件 1.安装 Python 2.7.PyCharm.pip(Python包管理工具).Django ( ...

  7. Docker基础学习笔记( 搭建web漏洞检测环境和容器中运行Django项目)

    目录 一.Docker技术的学习 1.1.docker安装(ubuntu16.04) 1.1.1.apt-get换国内清华源 1.1.2.安装最新版本的Docker 1.2.docker容器与镜像使用 ...

  8. 使用树莓派搭建stm32开发环境

    使用树莓派搭建stm32开发环境踩了很多坑,下面主要是记录一下踩过的坑,以及碰到的问题. 开发方式的选择 1.使用Eclipse+GDB+OpenOCD+STlink 这种方式我发现eclipse的I ...

  9. 从零开始搭建Linux服务器开发运行环境-详细步骤

    大家好,久违了! 时隔一年,我发表的上一篇博客年后第一更,谈谈收获及展望至今已快一年了,期间一直在忙没有时间写博客,原因就不细说了.由于我的个人云服务器到期了,所以我又买了一台阿里云的一年时长的ECS ...

最新文章

  1. (zz)ubuntu 9.04 下无线破解
  2. 宏碁电脑开启虚拟化技术_开启windows电脑的cpu虚拟化(VT)图文操作步骤
  3. 边工作边刷题:70天一遍leetcode: day 92
  4. CyAPI.lib(CyAPI.obj) : error LNK2019: 无法解析的外部符号...
  5. java同步方法同步块_java使用同步方法和同步块的区别
  6. vue数据定义格式_用好单元格自定义格式,让Excel按照你的要求显示数据
  7. 一台新云主机nodejs项目部署过程
  8. 云垒·私有云一体化安全管理平台
  9. lda主题模型困惑度_主题模型(三):LDA主题个数选择
  10. SourcesTree使用手册3:文件贮藏与删除
  11. 【LeetCode】【字符串】题号:*125. 验证回文串
  12. 09.html使用iframe、embed查看pdf不显示(未解决),使用pdf.js预览pdf
  13. 联想笔记本那些有手写功能_可以在屏幕上自由手写联想Android平板电脑的哪些软件?如何设置联想平板电脑的手写笔迹...
  14. python正则匹配数字_python——正则匹配数字
  15. 【推荐】实现跟随鼠标移动的浮动提示框、气泡框、Tip效果
  16. 《东周列国志》第七十八回 会夹谷孔子却齐 堕三都闻人伏法
  17. 做完系统回来计算机连接不上网络,win7重装系统之后连不上网的原因和解决方案...
  18. 什么是RRU和BBU
  19. 网站建设需要多少钱 开发一个网站有哪些费用
  20. Qt FFmpeg视频播放器开发(二):FFmepg基本使用与视频播放

热门文章

  1. 如何快速批量删除PDF文件中的文字 - PDF文字删除器
  2. Linux中误删/ etc/profile文件
  3. Kafka、zookeeper集群一键启动、一键关闭
  4. 质量意识培训案例之一(共六个)“降落伞的故事”
  5. 【SA8295P 源码分析】13 - Android GVM 虚拟机 QUPv3 UART / SPI / I2C功能配置及透传配置
  6. Unity URP 获取深度图
  7. 新魔百和M301H_关于CW代工_JL(南传)代工_zn及sm代工区分及鸿蒙架构全网通卡刷包刷机教程
  8. java redis面试_Redis面试20题(吐血整理)
  9. 很多朋友都说要免费引流脚本,但是真有免费引流脚本吗?
  10. 【LeetCode困难】1263. 推箱子