1.下载JavaService
百度搜索下载JavaService。
百度云是amd64架构的JavaService 链接:https://pan.baidu.com/s/1Jdv9qnywGVCOwWisqIjQdA 提取码:1234
2. 生成jar包
(1)export jar ,Eclipse选择如下选项
(2)Idea 直接在pom文件指定打包成jar ,然后运行maven的package生成jar即可。
(3)如果是spring boot项目,pom配置如下。spring boot的主类为org.springframework.boot.loader.JarLauncher。主类可配置可不配置。
<plugins> <plugin> <groupId>org.spingframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <mainClass> org.springframework.boot.loader.JarLauncher </mainClass> </configuration> </plugin> </plugins>
3.install.bat文件
内容为
JavaService.exe -install Face_Timing "%JAVA_HOME%"\jre\bin\server\jvm.dll -Djava.class.path="%CD%"\Face_Timing .jar;"%JAVA_HOME%"\lib\tools.jar -Xms64M -Xmx512M -start com.pzg.Timing.App -out "%CD%"\log.log -err "%CD%"\err.log -current "%CD%" -auto
注意:
(1)"%JAVA_HOME%" 引号必须有,否则如果文件夹路径有空格,会导致将路径当成两个独立的参数,从而导致无法启动。
(2)Face_Timing为服务名。如果本机已经有此服务名,需要删除才能再次安装。sc delete Face_Timing
(3)"%CD%" 代表当前文件所在目录
(4) -current "%CD%" 指定jar包运行时的jvm工作目录,相当于jar包的相对路径都相对于这个;若不指定,jar程序生成的日志或文件,会保存到C:\Windows\System32目录下。
请注意current的位置,必须在err后面,否则报错 Unrecognised or incorrectly-ordered parameters for install command。JavaService的参数顺序必须按照语法顺序来,否则报错。
(5)install以后,需要手动开启服务,两种方式
- win + r =>输入services.msc => 找到服务 ,第一次需要启动,以后开机会自动启动。
net start Face_Timing;
net stop Face_Timing
sc delete Face_Timing
(6)如果是spring boot,-start org.springframework.boot.loader.JarLauncher -method不用写默认即可。
说明:
(1) -install serviceName : 是你要发布服务的名称;
(2)系统环境中设置JAVA_HOME,指定你所需要使用的jre;
(3)在-Djava.class.path中指定你需要运行的jar,这里有个需要注意的地方后面会提到;
(4)-Xms64M -Xmx512M 设置jvm的基本参数,主要就是内存的分配;
(5)-out -err 重定向控制台输出信息;
%JAVA_HOME%与环境变量一致,%CD%表示当前的目录路径,参数-start 指定main类的路径com.ecservice.ECService,-method指定类中要调用的方法名StartService,-auto代表服务开机自动启动。
JavaService一共提供了8个参数可供选择,参数先后顺序必须和下面一致,其命令格式如下:
JavaService -install service_name jvm_library [jvm_options]
-start start_class [-method start_method] [-params (start_parameters)]
[-stop start_class [-method stop_method] [-params (stop_parameters)]]
[-out out_log_file] [-err err_log_file]
[-current current_dir]
[-path extra_path]
[-depends other_service]
[-auto | -manual]
[-shutdown seconds]
[-user user_name -password password]
[-append | -overwrite]
[-startup seconds]
[-description service_desc]相关参数的作用说明如下:
service_name:服务名称 jvm_library: 运行此服务使用的JVM路径 jvm_option: 运行JVM需要的参数,比如"-Djava.class.path=c:/classes" or "-Xmx128m". start_class: 服务启动时运行的主类 start_method: The method to call in the start_class. default: main start_parameters:Parameter(s) to pass in to the start_method. stop_class: The class to load when stopping the service. stop_method: The method to call in the stop_class. default: main stop_parameters: Parameter(s) to pass in to the stop_method. out_log_file: A file to redirect System.out into. (gets overwritten) err_log_file: A file to redirect System.err into. (gets overwritten) current_dir: The current working directory for the service. Relative paths will be relative to this directory. extra_path: Path additions, for native DLLs etc. (no spaces) other_service: Single service name dependency, must start first. auto / manual: Startup automatic (default) or manual mode. seconds: Java method processing time (startup:sleep, shutdown:timeout). user_name: User specified to execute the service (user@domain). password: Password applicable if user specified to run the service. append / overwrite: Log file output mode, append (default) or overwrite. service_desc: Text describing installed service (quoted string, max 1024).
4.uninstall.bat
内容为
JavaService.exe -uninstall Face_Timing
注意:
(1)如果服务正在启动,需要先停止服务再uninstall,否则控制台会输出 ``指定的服务已标记为删除``。
5.运行
将jar包和install.bat、uninstall.bat放在一个文件夹下,然后管理员模式打开命令窗口进入文件夹,输入install 即可运行install.bat,将jar注册为windows服务。
然后win+r 输入services.msc ,选择注册的服务启动即可。 可以修改为手动或自动模式。
windows命令行窗口cd d:/ 360 即可切换文件目录。注意 : 为英文状态。
补充:Spring Boot 为什么 java -jar 可以执行项目?
首先,找个我打好的jar包,举例。
org:主要存放springboot相关的class文件
META-INF:主要存放maven和MANIFEST.MF文件
BOOT-INF/classes:主要存放应用编译后的class文件
BOOT-INF/lib:主要存放应用依赖的jar包文件首先找到
META-INF文件下的MANIFEST.MF文件。内容如下:
Manifest-Version: 1.0 Spring-Boot-Classpath-Index: BOOT-INF/classpath.idx Archiver-Version: Plexus Archiver Built-By: USER Spring-Boot-Layers-Index: BOOT-INF/layers.idx Start-Class: com.layman.file.LaymanFileApplication Spring-Boot-Classes: BOOT-INF/classes/ Spring-Boot-Lib: BOOT-INF/lib/ Spring-Boot-Version: 2.5.6 Created-By: Apache Maven 3.6.3 Build-Jdk: 1.8.0_202 Main-Class: org.springframework.boot.loader.JarLauncher这里面有两个重要的属性
Start-Class: com.layman.file.LaymanFileApplicationMain-Class: org.springframework.boot.loader.JarLauncher首先,看最后一行:
Main-Class: org.springframework.boot.loader.JarLauncher。当你运行
java -jar命令的时候,它会找META-INF文件下的MANIFEST.MF文件中的Main-Class,最后找到org.springframework.boot.loader.JarLauncher。这个
JarLauncher,翻译一下,叫做jar包启动器。这个东西是哪来的?实际上,它是maven打包的时候弄进去的,也就是在pom.xml中定义的
spring-boot-maven-plugin插件<build> <finalName>${project.artifactId}</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build>tips:只有添加了
spring-boot-maven-plugin插件,运行mvn:package命令后打成的jar包才能直接java -jar 运行。这个插件在打包时,会生成
MANIFEST.MF文件,里面带有JarLauncher(jar包启动器)。这个jar包启动器老牛逼了。当你运行java -jar命令的时候,
JarLauncher会将BOOT-INF/classes下的类文件和BOOT-INF/lib下依赖的jar包加载到classpath下。最后调用META-INF下的MANIFEST.MF文件的Start-Class属性来完成应用程序的启动。也就是说它是
SpringBoot Loader提供了一套标准用于执行SpringBoot 打成的JAR包.
参考
【Java程序注册成服务】JavaService.exe将jar注册成win服务方式
使用Porcrun将java程序部署成windows服务 SpringBoot打包部署成Windows服务的详细步骤_Joy老烨头的博客-优快云博客_springboot项目部署到windows
本文详细介绍如何使用JavaService将Java程序,特别是SpringBoot项目,部署为Windows服务。包括JavaService下载、jar包生成、批处理文件编写及服务安装、卸载等步骤,并解释SpringBoot项目的启动原理。


6406

被折叠的 条评论
为什么被折叠?



