Java wrapperr打包springboot项目到linux和Windows

news2024/12/25 12:29:37

Java wrapper打包springboot项目到linux和Windows

  • 1 Java wrapper 说明
  • 2 linux的安装步骤
    • 2.1 解压 创建目录
    • 2.2 复制文件
    • 2.3 配置文件
    • 2.4 启动
  • 3 windows
    • 3.1 配置文件
    • 3.2 复制文件
    • 3.3 启动

1 Java wrapper 说明

前提: 一定要有Java环境(我使用的是jdk1.8)
可以直接去看官方的网站查看详情配置

官方网站的地址: https://wrapper.tanukisoftware.com/doc/english/home.html

下载:linux的目前免费的 windows 64位的好像收费的
在这里插入图片描述
下载一个社区版本的应该就够用了

2 linux的安装步骤

2.1 解压 创建目录

如果觉得嫌麻烦 就是直接在windows上操作 然后完成了以后直接打包上传到linux
在这里插入图片描述
解压的目录,然后我们新建自己的项目目录java-jsw
在这里插入图片描述

2.2 复制文件

前面是你解压的原文件 后边是你自己建的目录路径

cp $(WRAPPER_HOME)/bin/wrapper $(EXAMPLE_HOME)/bin/wrapper
cp $(WRAPPER_HOME)/lib/wrapper.jar $(EXAMPLE_HOME)/lib/wrapper.jar
cp $(WRAPPER_HOME)/lib/libwrapper.so $(EXAMPLE_HOME)/lib/libwrapper.so
cp $(WRAPPER_HOME)/src/bin/App.sh.in $(EXAMPLE_HOME)/bin/helloworldserver
cp $(WRAPPER_HOME)/src/conf/wrapper.conf.in $(EXAMPLE_HOME)/conf/wrapper.conf

#这个是启动文件
cp $(WRAPPER_HOME)/src/bin/App.sh.in $(EXAMPLE_HOME)/bin/helloworldserver
#给启动文件授权
chmod +x helloworldserver

自己的springboot项目(java代码)
在这里插入图片描述

2.3 配置文件

warpper.conf 修改的部分

wrapper.lang.folder=../lang

wrapper.jarfile=../lib/wrapper.jar


#java的路径
wrapper.java.command=/opt/jdk1.8.0_144/bin/java
#java的路径 如果安装了并配置了环境变量 就可以用这个默认的
wrapper.java.command=%JAVA_HOME%/bin/java

# 默认的这个不要改
wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperSimpleApp
wrapper.java.classpath.missing.loglevel=WARN
# 运行所需要的jar wrapper.jar是固定的 然后springboot的classes文件 最后是需要的jar文件
wrapper.java.classpath.1=../lib/wrapper.jar
wrapper.java.classpath.2=../lib/classes
wrapper.java.classpath.3=../lib/*.jar
wrapper.java.library.path.1=../lib
wrapper.java.additional.auto_bits=TRUE
wrapper.java.additional.1=
#启动类的全路径类名
wrapper.app.parameter.1=com.hexin.file.sync.HexinFilesyncApplication
#日志按天输出
wrapper.logfile=../logs/run-YYYYMMDD.log

2.4 启动

把编辑好的文件打包到linux上边

测试运行的命令
所有命令

[root@yang154 bin]# ./app 
Usage: ./app [ console | start | stop | restart | condrestart | status | install | installstart | remove | dump ]

Commands:
  console      Launch in the current console.
  start        Start in the background as a daemon process.
  stop         Stop if running as a daemon or in another console.
  restart      Stop if running and then start.
  condrestart  Restart only if already running.
  status       Query the current status.
  install      Install to start automatically when system boots.
  installstart Install and start running as a daemon process.
  remove       Uninstall.
  dump         Request a Java thread dump if running.

测试

[root@yang154 bin]# ./app  console      

项目运行起来了就算成功

安装并启动

[root@yang154 bin]# ./app installstart 

在这里插入图片描述
表示成功 这个时候就可以访问了

停止

[root@yang154 bin]# ./app stop

重启

[root@yang154 bin]# ./app restart 

3 windows

百度的一个windows的下载地址:点击跳转

官方的配置地址 https://wrapper.tanukisoftware.com/doc/english/qna-service.html

步骤和上面的一样 不过复制的文件不一样

3.1 配置文件

#encoding=UTF-8
# Configuration files must begin with a line specifying the encoding
#  of the the file.
#
# NOTE - Please use src/conf/wrapper.conf.in as a template for your
#        own application rather than the values used for the
#        TestWrapper sample.

#********************************************************************
# Wrapper License Properties (Ignored by Community Edition)
#********************************************************************
# Professional and Standard Editions of the Wrapper require a valid
#  License Key to start.  Licenses can be purchased or a trial license
#  requested on the following pages:
# http://wrapper.tanukisoftware.com/purchase
# http://wrapper.tanukisoftware.com/trial

# Include file problems can be debugged by leaving only one '#'
#  at the beginning of the following line:
##include.debug

# The Wrapper will look for either of the following optional files for a
#  valid License Key.  License Key properties can optionally be included
#  directly in this configuration file.
#include ../conf/wrapper-license.conf
#include ../conf/wrapper-license-%WRAPPER_HOST_NAME%.conf

# The following property will output information about which License Key(s)
#  are being found, and can aid in resolving any licensing problems.
#wrapper.license.debug=TRUE

#********************************************************************
# Wrapper Localization
#********************************************************************
# Specify the language and locale which the Wrapper should use.
#wrapper.lang=en_US # en_US or ja_JP

# Specify the location of the language resource files (*.mo).
wrapper.lang.folder=../lang

#********************************************************************
# Wrapper Java Properties
#********************************************************************
# Wrapper Jar file
wrapper.jarfile=../lib/wrapper.jar

# Java Application
#  Locate the java binary on the system PATH:
wrapper.java.command=java
#  Specify a specific java binary:
#set.JAVA_HOME=/java/path
#wrapper.java.command=%JAVA_HOME%/bin/java
wrapper.java.command=../jre/bin/javaw.exe

# Tell the Wrapper to log the full generated Java command line.
#wrapper.java.command.loglevel=INFO

# Java Main class.  This class must implement the WrapperListener interface
#  or guarantee that the WrapperManager class is initialized.  Helper
#  classes are provided to do this for you.
#  See the following page for details:
#  http://wrapper.tanukisoftware.com/doc/english/integrate.html
wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperSimpleApp

# Log level for notices about missing Java Classpath entries.
wrapper.java.classpath.missing.loglevel=WARN

# Java Classpath.  Add class path elements as needed starting from 1
wrapper.java.classpath.1=../lib/classes

wrapper.java.classpath.2=../lib/wrapper.jar
wrapper.java.classpath.3=../lib/*.jar



# Java Modulepath. (Requires Java 9 or above)
#  Add module path elements as needed starting from 1
wrapper.java.library.path.1=../lib

# Java Module list. (Requires Java 9 or above)
#  Add module names as needed starting from 1
#wrapper.java.module.1=

# Java Library Path (location of Wrapper.DLL or libwrapper.so)
wrapper.java.library.path.1=../lib

# Java Bits.  On applicable platforms, tells the JVM to run in 32 or 64-bit mode.
wrapper.java.additional.auto_bits=TRUE

# Java Additional Parameters
wrapper.java.additional.1=

# Initial Java Heap Size (in MB)
#wrapper.java.initmemory=3

# Maximum Java Heap Size (in MB)
#wrapper.java.maxmemory=64

# Application parameters.  Add parameters as needed starting from 1
wrapper.app.parameter.1=com.hexin.file.sync.HexinFilesyncApplication


#********************************************************************
# Wrapper Logging Properties
#********************************************************************
# Enables Debug output from the Wrapper.
# wrapper.debug=TRUE

# Format of output for the console.  (See docs for formats)
wrapper.console.format=PM

# Log Level for console output.  (See docs for log levels)
wrapper.console.loglevel=INFO

# Log file to use for wrapper output logging.
#wrapper.logfile=../logs/wrapper.log
wrapper.logfile=../logs/run-YYYYMMDD.log


# Format of output for the log file.  (See docs for formats)
wrapper.logfile.format=LPTM

# Log Level for log file output.  (See docs for log levels)
wrapper.logfile.loglevel=INFO

# Roll mode of the log file.
#  SIZE_OR_WRAPPER causes the file to be rolled whenever its size exceeds the
#  value defined by wrapper.logfile.maxsize, or whenever the Wrapper is
#  launched.
wrapper.logfile.rollmode=SIZE_OR_WRAPPER

# Maximum size that the log file will be allowed to grow to before
#  the log is rolled. Size is specified in bytes.  The default value
#  of 0, disables log rolling.  May abbreviate with the 'k' (kb) or
#  'm' (mb) suffix.  For example: 10m = 10 megabytes.
wrapper.logfile.maxsize=10m

# Maximum number of rolled log files which will be allowed before old
#  files are deleted.  The default value of 0 implies no limit.
wrapper.logfile.maxfiles=9

# Log Level for sys/event log output.  (See docs for log levels)
wrapper.syslog.loglevel=NONE

#********************************************************************
# Wrapper General Properties
#********************************************************************
# Allow for the use of non-contiguous numbered properties
wrapper.ignore_sequence_gaps=TRUE

# Do not start if the pid file already exists.
wrapper.pidfile.strict=TRUE

# Title to use when running as a console
wrapper.console.title=Test Wrapper Sample Application

#********************************************************************
# Wrapper JVM Checks
#********************************************************************
# Detect DeadLocked Threads in the JVM. (Requires Standard Edition)
wrapper.check.deadlock=TRUE
wrapper.check.deadlock.interval=10
wrapper.check.deadlock.action=RESTART
wrapper.check.deadlock.output=FULL

# Out Of Memory detection.
# (Ignore output from dumping the configuration to the console.  This is only needed by the TestWrapper sample application.)
wrapper.filter.trigger.999=wrapper.filter.trigger.*java.lang.OutOfMemoryError
wrapper.filter.allow_wildcards.999=TRUE
wrapper.filter.action.999=NONE
#  Ignore -verbose:class output to avoid false positives.
wrapper.filter.trigger.1000=[Loaded java.lang.OutOfMemoryError
wrapper.filter.action.1000=NONE
# (Simple match)
wrapper.filter.trigger.1001=java.lang.OutOfMemoryError
# (Only match text in stack traces if -XX:+PrintClassHistogram is being used.)
#wrapper.filter.trigger.1001=Exception in thread "*" java.lang.OutOfMemoryError
#wrapper.filter.allow_wildcards.1001=TRUE
wrapper.filter.action.1001=RESTART
wrapper.filter.message.1001=The JVM has run out of memory.

#********************************************************************
# Wrapper Email Notifications. (Requires Professional Edition)
#********************************************************************
# Common Event Email settings.
#wrapper.event.default.email.debug=TRUE
#wrapper.event.default.email.smtp.host=<SMTP_Host>
#wrapper.event.default.email.smtp.port=25
#wrapper.event.default.email.subject=[%WRAPPER_HOSTNAME%:%WRAPPER_NAME%:%WRAPPER_EVENT_NAME%] Event Notification
#wrapper.event.default.email.sender=<Sender email>
#wrapper.event.default.email.recipient=<Recipient email>

# Configure the log attached to event emails.
#wrapper.event.default.email.maillog=ATTACHMENT
#wrapper.event.default.email.maillog.lines=50
#wrapper.event.default.email.maillog.format=LPTM
#wrapper.event.default.email.maillog.loglevel=INFO

# Enable specific event emails.
#wrapper.event.wrapper_start.email=TRUE
#wrapper.event.jvm_prelaunch.email=TRUE
#wrapper.event.jvm_start.email=TRUE
#wrapper.event.jvm_started.email=TRUE
#wrapper.event.jvm_deadlock.email=TRUE
#wrapper.event.jvm_stop.email=TRUE
#wrapper.event.jvm_stopped.email=TRUE
#wrapper.event.jvm_restart.email=TRUE
#wrapper.event.jvm_failed_invocation.email=TRUE
#wrapper.event.jvm_max_failed_invocations.email=TRUE
#wrapper.event.jvm_kill.email=TRUE
#wrapper.event.jvm_killed.email=TRUE
#wrapper.event.jvm_unexpected_exit.email=TRUE
#wrapper.event.wrapper_stop.email=TRUE

# Specify custom mail content
wrapper.event.jvm_restart.email.body=The JVM was restarted.\n\nPlease check on its status.\n

#********************************************************************
# Wrapper Windows Service Properties
#********************************************************************
# WARNING - Do not modify any of these properties when an application
#  using this configuration file has been installed as a service.
#  Please uninstall the service before modifying this section.  The
#  service can then be reinstalled.

# Name of the service
wrapper.name=sync

# Display name of the service
wrapper.displayname=sync

# Description of the service
wrapper.description=sync service

# Service dependencies.  Add dependencies as needed starting from 1
wrapper.ntservice.dependency.1=

# Mode in which the service is installed.
#  AUTO_START, DELAY_START (Requires Standard Edition) or DEMAND_START
wrapper.ntservice.starttype=AUTO_START

# Allow the service to interact with the desktop (Windows NT/2000/XP only).
wrapper.ntservice.interactive=FALSE

# Allow the current user to perform certain actions without being prompted for
#  administrator credentials. (Requires Professional Edition)
#wrapper.ntservice.permissions.1.account=CURRENT_USER
#wrapper.ntservice.permissions.1.allow=START, STOP, PAUSE_RESUME

3.2 复制文件

在这里插入图片描述
上图文件复制的地方 全部复制过去 保留自己需要的 然后去掉后缀.in
在这里插入图片描述
wapper.exe文件
在这里插入图片描述

测试启动就是点击App.bat 就会有信息的输出 installApp就是注册为一个windows上的一个服务
需要注意的点 有Java环境

wrapper.java.command=../jre/bin/javaw.exe

我这样配置是我把Java安装时候jre目录复制到了这个目录下
在这里插入图片描述

3.3 启动

双击App.bat
在这里插入图片描述
结束就是ctrl+c

注册成服务以后
在这里插入图片描述

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

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

相关文章

【ArcGIS Pro】扩展模块 Nuget 使用

前提需知 ArcGIS Pro 扩展模块30 NuGet 仅适用于 ArcGIS Pro 加载项和配置。由于 NuGet 包含 Pro 公共扩展模块 API&#xff0c;因此不应在核心主机应用程序和 Pro 插件中引用它&#xff0c;这些应用程序和插件旨在与 ArcGIS.Core 地理数据库和几何 API 一起使用&#xff0c;而…

druid jdbc 执行 sql 输出 开销耗时

druid 执行sql输出 参考链接配置_LogFilter alibaba/druid Wiki GitHub 看不太懂的往这里瞅瞅。 1. 别名映射 这个地方 给我们提供了 5 种 logfilter : log4j、log4j2、slf4j、commonlogging和commonLogging 每一种实际上都代表一个日志框架 或 日志门面。 -Ddruid.fil…

吊打面试官!业务架构的关键概念

商业模式 商业模式是帮助企业成功的“秘诀”&#xff0c;它通过整合企业内外部的多种要素&#xff0c;构建起一个全面、高效且具有独特竞争优势的运营体系。这一体系的目的是满足市场的需求&#xff0c;实现各利益相关者价值最大化&#xff0c;并确保企业的长期盈利能力。 商…

rabbitmq容器化部署

需求 容器化部署rabbitmq服务 部署服务 找到如下官网信息版本 官网版本发布信息 这里看到最新版本是3.13版本&#xff0c;这里在3.13中找一个版本下载容器镜像即可。 找到dockrhub.com中 找到3.13.2版本镜像。 容器服务安装此处省略 现在下载容器镜像需要配置容器代理 ~#…

.NET微信网页开发之使用微信JS-SDK获取当前地理位置

前言&#xff1a; 前段时间有一个关于通过获取用户当前经纬度坐标&#xff0c;计算出该用户距离某指定地点之间的距离。因为做这个项目需要能够获取到比较精确的经纬度坐标&#xff0c;刚开始使用的是百度地图结果发现百度地图地位不太准确&#xff08;有时候相差的比较的大&am…

u盘怎么重装系统_u盘重装win10系统详细图文教程【支持新旧机型】

u盘怎么重装系统&#xff1f;对于电脑小白来说用u盘安装系统还是有点难度的&#xff0c;有些电脑小白采用在线一键重装的方式安装系统&#xff0c;结果在安装过程中出现各种问题进不了系统了。所以建议小白采用U盘方式安装系统比较保险&#xff0c;因为这样哪怕安装失败还可以通…

一些写leetcode的笔记

标准库中的string类没有实现像C#和Java中string类的split函数&#xff0c;所以想要分割字符串的时候需要我们自己手动实现。但是有了stringstream类就可以很容易的实现&#xff0c;stringstream默认遇到空格、tab、回车换行会停止字节流输出。 #include <sstream> #incl…

.NET 一款在线解密Web.config的脚本

01阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等&#xff08;包括但不限于&#xff09;进行检测或维护参考&#xff0c;未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失&#xf…

PowerShell install 一键部署Oracle21c-xe

Oracle21c-xe前言 Oracle Database 23ai Free 让您可以充分体验 Oracle Database 的能力,世界各地的企业都依赖它来处理关键任务工作负载。 Oracle Database Free 的资源限制为 2 个 CPU(前台进程)、2 GB 的 RAM 和 12 GB 的磁盘用户数据。该软件包不仅易于使用,还可轻松下…

会议室占用【python实现】

题目来自此 思路见代码随想录合并区间 def main():import astmeetings ast.literal_eval(input())meetings.sort(keylambda x:x[0])result [meetings[0]]for meeting in meetings:if meeting[0] < result[-1][1]:result[-1][1] meeting[1]else:result.append(meeting)pr…

使用gitee如何回滚上一个版本,简单操作方式-gitee自带功能无需使用代码

使用gitee如何回滚上一个版本&#xff0c;简单操作方式-gitee自带功能无需使用代码&#xff0c;很多朋友使用代码的话容易出错&#xff0c;gitee自带了本功能&#xff1a; 找到gitee代码仓库&#xff0c;找到对应的想要回滚的版本点击进去 点击revert&#xff0c;选择自己对应的…

程序员的AI时代,如何用AI来增加副业收入

大家好&#xff0c;我是程序员小灰。今天&#xff0c;我来继续和大家聊一聊AI这个话题。 众所周知&#xff0c;在2023年3月&#xff0c;OpenAI公司的GPT-4横空出世&#xff0c;在全世界掀起了AIGC的热潮。随后一年多的时间里&#xff0c;众多强大的AI工具如雨后春笋一般涌现出…

初学51单片机之IO口上下拉电阻相关

本案本来是描述一下I2C总线的&#xff0c;在此之前推荐一下B站一个UP关于时序图的讲解 I2C入门第一节-I2C的基本工作原理_哔哩哔哩_bilibili 不过在描述I2C前先简单的探讨下51单片机IO口下拉电阻的基本情况&#xff0c;事实上这个问题困扰笔者很长时间了&#xff0c;这次也是一…

【机器学习(二)】分类和回归任务-决策树算法-Sentosa_DSML社区版

文章目录 一、算法概念二、算法原理&#xff08;一&#xff09;树的构造&#xff08;二&#xff09;划分选择1、信息增益2、基尼指数3、卡方检验 &#xff08;三&#xff09;停止标准&#xff08;四&#xff09;剪枝处理1、预剪枝2、后剪枝 三、决策树的优缺点四、决策树分类任…

“孪舟”引擎V5.0:更有颜、更真实、更智能、更灵活、更强大

在9月6日智汇云舟2024视频孪生产品发布会上&#xff0c;我们向线上线下嘉宾展示了基于视频孪生技术的众多产品&#xff0c;以及前沿技术。我们的目标是依托自研3DGIS引擎&#xff0c;将视频、AI、IoT等多种技术深度融合&#xff0c;升级数字孪生为视频孪生&#xff0c;实时实景…

mathorcup发邮件:参赛必看邮件撰写技巧?

mathorcup发邮件的注意事项&#xff1f;如何使用mathorcup发信&#xff1f; 无论是提交参赛作品、咨询比赛规则&#xff0c;还是与组委会沟通&#xff0c;一封清晰、专业的邮件都能为你赢得更多机会。AokSend将为你详细介绍mathorcup发邮件的撰写技巧&#xff0c;帮助你在比赛…

分析图形学示例报告

一、实验任务 二、主要功能模块 三、代码 //自定义坐标系模块 CDC* pDC GetDC();//获得设备上下文 CRect rect;//定义矩形 GetClientRect(&rect);//获得矩形客户去大小 pDC->SetMapMode(MM_ANISOTROPIC);//自定义坐标系 pDC->SetWindowExt(rect.Width()/4, rect.He…

赛氪技术支持中医药知识大赛,亮相中国国际服务贸易交易会

2024年&#xff0c;全球瞩目的中国国际服务贸易交易会&#xff08;简称“服贸会”&#xff09;在北京盛大召开。作为全球首个国家级、国际性、综合性服务贸易交易会&#xff0c;服贸会不仅是展示世界前沿科技发展水平的高端平台&#xff0c;更是全球科技企业交流互通的桥梁。与…

快手手撕 力扣2487 从链表中移除节点 单调栈 递归

Problem: 2487. 从链表中移除节点 &#x1f468;‍&#x1f3eb; 参考题解 &#x1f496; 递归解法 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* …

VSCode创建C++项目和编译多文件

前言 在刚安装好VSCode后&#xff0c;我简单尝试了仅main.cpp单文件编译代码&#xff0c;没有问题&#xff0c;但是当我尝试多文件编译时&#xff0c;就出现了无法识别cpp文件。 内容 创建项目 首先点击左上角“文件”&#xff1b;在菜单中选择“打开文件夹”&#xff1b;在…