树莓派Java程序运行_树莓派上Java程序作为linux服务并开机自动启动

http://www.iigrowing.cn/shu_mei_pai_shang_java_cheng_xu_zuo_wei_linux_fu_wu_bing_kai_ji_zi_dong_qi_dong.html

刚刚买了, 树莓派, 准备做一些程序, 放到树莓派上, 平时树莓派上不接显示器等各种设备,直接随着adsl开关进行开关。 这样一些java程序启动就有些麻烦。

开 发过程中很多要独立运行,他们并不会以web形式发布,传统的做法是将其压缩为jar包独立运行,这种形式简单易行也比较利于维护,但是一 旦服务器重启或出现异常时,程序往往无法自行修复或重启。解决服务器重启的传统做法是编写一段shell脚本随服务器启动而运行,但是这样做只是治标,那 么我们想寻求一种“治本”的方式该怎么办呢?

Java Service Wrapper就轻松而简单的为我们解决了这些问题。”Java

Service Wrapper”顾名思义,将我们的Java程序包装成系统服务,这样就可以随着系统的运行而自动运行,当然Java Service

Wrapper(下面简称Wrapper)的功能绝不仅于此。

下载地址如下:

http://wrapper.tanukisoftware.com/doc/english/download.jsp

查看一些 树莓派的 cpu类型, 查询如下:

5d47eb73cee33623339fb5096ed74da2.png

通过 cat /proc/cpuinfo 查询可以知道 树莓派是 arm类型的cpu,因此在下载页面中

选择如下图的版本:

c7114eb6d9156a61b148a46ac69d40d7.png

如上图, 选择 矩形和圆形交叉区域的 版本。

我们选择Linux x86版本下载,解压后目录组成如下图所示:

49d8ef37e29c7be04ab28901e154b6c4.png

编写一个最简单的java程序

package cn.iigrowing.linux.java.start;

public class Main {

public static void main(String[] args) {

// TODO Auto-generated method stub

System.out.println(“hello”);

}

}

仅仅打印一个信息

如下是最后设置完成后的目录等结构774ecf78c8b88368b2d80ca7a4ce7cb8.png

以有个java应用名称为IigLinuxStartJavaServer,打包为linux.java.service.jar,程序入口为cn.iigrowing.linux.java.start.Main。

下面在linux的/usr/local下建立IigLinuxStartJavaServer目录,复制linux.java.service.jar到/usr/local/IigLinuxStartJavaServer/lib目录下。

1、下载Java Service Wrapper(目前版本wrapper-linux-x86-32-3.2.3), 解压。

http://wrapper.tanukisoftware.org/

复制src\bin\sh.script.in到/usr/local/IigLinuxStartJavaServer/bin目录,重命名为IigLinuxStartJavaServer

复制wrapper\bin目录下的wrapper文件到/usr/local/IigLinuxStartJavaServer/bin目录

复制src\conf\wrapper.conf.in到/usr/local/IigLinuxStartJavaServer/conf目录,重命名为wrapper.conf

复制src\lib\lib目录下文件到/usr/local/IigLinuxStartJavaServer/lib目录

wrapper.so

wrapper.jar

2、修改/opt/testapp/bin/SocketServer文件

APP_NAME=”IigLinuxStartJavaServer”

APP_LONG_NAME=”IigLinuxStartJavaServer Application Server”

WRAPPER_CMD=”./wrapper”

WRAPPER_CONF=”../conf/wrapper.conf”

赋予执行权限

chmod 775 /usr/local/IigLinuxStartJavaServer/bin/IigLinuxStartJavaServer

chmod 775 /usr/local/IigLinuxStartJavaServer/bin/wrapper

3、修改/opt/testapp/conf/wrapper.conf文件

使用WrapperStartStopApp,这样可以通过命令带start/stop来启动/停止程序。

wrapper.java.mainclass=cn.iigrowing.linux.java.start.Main

#这里添加你用到的jar包文件,从1..n你自己全写上吧,不过wrapper是必须的

wrapper.java.classpath.1=../lib/wrapper.jar

wrapper.java.classpath.2=../lib/test.jar

wrapper.java.classpath.3=../lib/linux.java.service.jar

wrapper.java.library.path.1=../lib

#这个就是你自己可执行程序的主类(MainClass),一般来说,就是包含public static void main的那个类

上面的配置里使用了WrapperStartStopApp,这样可以通过命令带start/stop来启动/停止程序。

4、让SocketServer开机自动运行

ln -s /usr/local/IigLinuxStartJavaServer/bin/IigLinuxStartJavaServer /etc/init.d/IigLinuxStartJavaServer

ln -s /usr/local/IigLinuxStartJavaServer/bin/IigLinuxStartJavaServer /etc/rc0.d/IigLinuxStartJavaServer

ln -s /usr/local/IigLinuxStartJavaServer/bin/IigLinuxStartJavaServer /etc/rc1.d/IigLinuxStartJavaServer

ln -s /usr/local/IigLinuxStartJavaServer/bin/IigLinuxStartJavaServer /etc/rc2.d/IigLinuxStartJavaServer

ln -s /usr/local/IigLinuxStartJavaServer/bin/IigLinuxStartJavaServer /etc/rc3.d/IigLinuxStartJavaServer

ln -s /usr/local/IigLinuxStartJavaServer/bin/IigLinuxStartJavaServer /etc/rc4.d/IigLinuxStartJavaServer

ln -s /usr/local/IigLinuxStartJavaServer/bin/IigLinuxStartJavaServer /etc/rc5.d/IigLinuxStartJavaServer

ln -s /usr/local/IigLinuxStartJavaServer/bin/IigLinuxStartJavaServer /etc/rc6.d/IigLinuxStartJavaServer

5、测试 执行命令:service IigLinuxStartJavaServer start|stop|restart|status

程序运行时,Java Service Wrapper在/usr/local/IigLinuxStartJavaServer/bin//目录下产生wrapper.log日志,

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/571929.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

**设计模式中的常用原则

1 单一职责原则: 单一职责就是发现软件设计中的不同职责,并把这些职责相互分离。比如代理模式中,验证交给代理完成,真实对象只需要关注自身的逻辑实现。见http://www.cnblogs.com/buptzlb/p/7595899.html 应用四 2 开放-封闭原则…

小程序 mathjs渲染公式_Mac 3D渲染和动画制作----KeyShot 9 Pro

KeyShot 9 Pro for Mac是应用在Mac上的一款3D渲染和动画制作软件,keyshot是您快速创建精彩视觉效果所需的一切。在实时3D渲染工作流程显示结果即时,缩短了创建逼真的产品拍摄的时间。从科学上准确的材料和环境预设到高级材料编辑和动画,创建交…

java 生成token代码_java token生成和校验的实例代码

现在越来越多的登录方式都用到了token作为用户登录令牌,所以实现了一个token生成和校验案例。缺点:该实现方式token是存储在内存中,不适合分布式项目,如需改为分布式项目部署,可把token存储在redis中,其中的…

用AsyncTask来获取网络图片

先看下运行结束 这里有两个Button 点击第一个Button运行的结果&#xff01;第一张有一个旋转的灰色圈圈&#xff01; 点击第二个Button运行的结果如下&#xff1a;带进度条的 ok,看下实现方法 先在配置清单中加一个访问网络的权限&#xff01; <uses-permission android:nam…

bilibili有电脑版吗_哪个手机便签软件有电脑版?有跨平台的桌面便签软件吗 - 学显...

如果仔细观察的话&#xff0c;你会发现&#xff1a;现在很多手机桌面上都有一款名叫“便签”的app小软件。其实&#xff0c;这是手机系统自带的一款备忘小工具&#xff0c;是为了方便用户记事而设计的。也就是说&#xff0c;平时如果有什么事儿需要记下来的话&#xff0c;就可以…

java 执行顺序混乱_java类执行顺序问题

经常遇到的面试题&#xff0c;一个类继承另一个类然后问输出的结果是什么。个人觉得就是考类的输出问题(亲测)第一&#xff1a;单一的类执行顺序package Test;public class person {static{System.out.println("父类的静态块");}person(){System.out.println("父…

win10关机后自动重启_安卓手机重启和关机后再开机,区别原来这么大!别不当回事...

现在大家用智能手机&#xff0c;只会在以下几种情况关机&#xff0c;一种是用到没电&#xff0c;自动关机了。另一种是手机有点卡顿&#xff0c;通过关机再开机的方式&#xff0c;释放RAM内存&#xff0c;提高手机运行速度。而现在的很多手机&#xff0c;比如小米手机&#xff…

java 遍历属性文件路径_Java项目中读取properties文件,以及六种获取路径的方法...

Java读取properties文件的方法比较多&#xff0c;网上最多的文章是"Java读取properties文件的六种方法"&#xff0c;但在Java应用中&#xff0c;最常用还是通过java.lang.Class类的getResourceAsStream(String name) 方法来实现&#xff0c;但我见到众多读取properti…

前端周报:前端面试题及答案总结;JavaScript参数传递的深入理解

1、2017前端面试题及答案总结 |掘金技术征文 "金三银四&#xff0c;金九银十"&#xff0c;用来形容求职最好的几个月。但是随着行业的饱和&#xff0c;初中级前端er就业形势不容乐观。 行业状态不可控&#xff0c;我们能做的当然只是让自己变得更加具有竞争力。 今年…

python二级考试真题_全国BIM技能等级考试真题全套(一/二级,全专业,28套)

BIM技能等级考试即将到来&#xff0c;你准备好了吗&#xff1f;今日为大家整理了一套网友上传的BIM等级考试全套真题&#xff0c;供大家学习参考~BIM一级真题解析课程限免&#xff1a;(点我)全国BIM技能等级考试真题解析(一级)仅限6月5日一天免费第一期全国BIM技能等级考试一级…

java frame清除控件_java – 清除JFrame的组件并添加新组件

我有一个JFrame,它有一些选项.当按下OK按钮时,我想要相同的JFrame清除内容并添加新内容.我试过了,但问题是新的JFrame被弹出.我究竟做错了什么&#xff1f;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.IOExcept…

Awk使用方法简介

AWK AWK简介&#xff1a;awk是一个强大的文本分析工具&#xff0c;相对于grep的查找&#xff0c;sed的编辑&#xff0c;awk在其对数据分析并生成报告时&#xff0c;显得尤为强大。简单来说awk就是把文件逐行的读入&#xff0c; 以空格为默认分隔符将每行切片…

矩形波如何傅立叶展开_金科文化会不会连续拉板?两位同学展开激辩

【编者按&#xff1a;金科文化是我们昨晚理论上留下的两道作业题之一&#xff0c;要求同学们根据课程内容&#xff0c;判断一下它是否符合连板青云的条件&#xff1f;后市如何预判&#xff1f;操作计划怎么制定&#xff1f;今天&#xff0c;很多同学就此展开了分析和讨论。今晚…

java web 不用框架_MyShop-不用框架的基础javaweb项目

javaweb基础开发Servletjspmysqlhtmlcssjs(找一个前端模板&#xff0c;一大堆html,自己写的没有模板的美观)数据库设计来一个最基础的用户表drop table ifexists myshop_user;create table myshop_user(USER_ID varchar(32) not null,USER_NAME varchar(20) not null,USER_PASS…

程序包管理器控制台 Add-Migration 用法

需要注意的是&#xff1a; 1.任何对数据库的操作都在代码和程序包管理控制台完成&#xff0c;千万不要自己去修改数据库&#xff0c;no&#xff01; 2.ef中创建数据库的表必须要有主键~&#xff01;否则 就不让你成功~ 现在来说如何映射 第一步创建在代码model中创建类 第二步 …

ipad如何连接电脑_电脑无法连接外网远程调试,一文教你如何用手机让台式机连接外网...

在弱电施工中&#xff0c;设备调试是一个很重要的环节&#xff0c;施工这么久就是为了实现弱电各系统的功能&#xff0c;调试是每一个弱电人系必需会的技能&#xff0c;也是检验你结合能力一种体现。在调试中会遇到各种你想不到的问题&#xff0c;当遇到问题时&#xff0c;你应…

java 多线程两种方式_JAVA多线程实现的两种方式

java多线程实现方式主要有两种&#xff1a;继承Thread类、实现Runnable接口1、继承Thread类实现多线程继承Thread类的方法尽管被我列为一种多线程实现方式&#xff0c;但Thread本质上也是实现了Runnable接口的一个实例&#xff0c;它代表一个线程的实例&#xff0c;并且&#x…

CAN总线学习资料

CAN总线呕心沥血教程 https://wenku.baidu.com/view/486647f47c1cfad6195fa794.html转载于:https://www.cnblogs.com/codecamel/p/7605480.html

安卓手机浏览器排行_安卓手机性能排行榜:国产手机集体“出位”,华为却在角落哭泣?...

华为手机的芯片一直都坚称是国产的骄傲&#xff0c;但是现在的华为芯片出现了一系列的问题&#xff0c;甚至有人预言在今年九月份之后&#xff0c;华为就不再会获得台积电的芯片供应了。这样&#xff0c;对华为来说无疑是不好的势头&#xff0c;而且芯片刚被市场认可&#xff0…

python os.access_os.access(path, mode)

os.access(path, mode)描述 (Description)方法access()使用真实的uid/gid来测试对路径的访问。 大多数操作都将使用有效的uid/gid&#xff0c;因此可以在suid/sgid环境中使用此例程来测试调用用户是否具有对path的指定访问权限。如果允许访问&#xff0c;则返回True&#xff0c…