码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • BAT批处理命令启动Java打包的Jar没有指定启动类且第三方lib包在主jar外的项目


    今天测试说要有一个本地运行的服务器项目,这样测试器游戏来可以随意修改,无需通知服务器。那简单啊,直接打包丢给他即可。

    目标

    • 本地无需配置java环境
    • 点击批处理文件即可启动

    项目目录如下

    在这里插入图片描述

    config:项目配置文件
    res:项目的json文件
    lib:项目的jar包
    log:启动日志
    startUp.bat: 启动脚本
    
    • 1
    • 2
    • 3
    • 4
    • 5

    启动脚本编写

    @echo off
    SetLocal EnableDelayedExpansion  
    FOR %%i IN (".\lib\*.jar") DO SET CLASSPATH=!CLASSPATH!;%%~fsi  
    echo %CLASSPATH%   
    .\jre1.8.0_212\bin\java com.xxx.mengfusheng.ServerMain
    EndLocal
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    第一句:启用变量延迟;
    第二句:循环将.jar文件加入,并以短路径的形式加入;
    比如:C:\Program Files\lib\XXX.jar
    变为:C:\Progra~1\lib\XXX.jar
    第三句:显示设置后的CLASSPATH值;
    第四句:还原系统环境设置

    注意:第二句的!CLASSPATH! 与 %%~fsi 的写法,特别是!CLASSPATH!而不是%CLASSPATH%

    如果是想以相对径的加入到CLASSPATH的话,就直接用

    代码如下

    FOR %%i IN ("./lib/*.jar") DO SET CLASSPATH=!CLASSPATH!;%%i  
    
    • 1

    若在Linux下则

    #!/bin/sh
    CP=.
    for i in ./lib/*.jar
    do
        CP="$i:$CP"
    done
    java -cp "$CP" com.xxx.mengfusheng.ServerMain &
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    注意点

    1. 项目中的配置都放在主jar包外面
    2. 第三方的jar包也放在主jar包外面
    3. 主jar包没有包含启动类,需要在启动的时候指定启动的jar类

    附注 POM配置

    <build>
    		<resources>
                
                <resource>
                    <directory>src/main/resourcesdirectory>
                    <filtering>truefiltering>
                resource>
            resources>
    	
    		 <plugins>
    		 	 
                <plugin>
                    <groupId>org.apache.maven.pluginsgroupId>
                    <artifactId>maven-jar-pluginartifactId>
                    <configuration>
                        
                        <archive>
                            
                            <manifestEntries>
                            		
                                <Class-Path>resources/Class-Path>
                                	
                            	<Agent-Class>hotupdate.agent.MyAgentAgent-Class>
    								
                            	<Can-Redefine-Classes>trueCan-Redefine-Classes>
    								
                            	<Can-Retransform-Classes>trueCan-Retransform-Classes>
                            manifestEntries>
                            <manifest>
                            	<addClasspath>trueaddClasspath>
                        	manifest>
    							
                        archive>
                         
                        <excludes>
                            <exclude>**/*.xmlexclude>
                            <exclude>**/*.txtexclude>
                            <exclude>**/*.propertiesexclude>
                            <exclude>**/*/*.jsonexclude>
                        excludes>
                    configuration>
                plugin>
                
    		 
    			<plugin>
    				<groupId>org.apache.maven.pluginsgroupId>
    				<artifactId>maven-compiler-pluginartifactId>
    				<version>3.6.1version>
    				<configuration>
    					<source>1.8source>
    					<target>1.8target>
    					<encoding>UTF-8encoding>
    				configuration>
    			plugin>
    		plugins>
    	build>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90

    maven打包的指令如下:

    mvn dependency:copy-dependencies -DoutputDirectory=target/lib package
    
    • 1
  • 相关阅读:
    用 Python 自动创建 Markdown 表格 - 每天5分钟玩转 GPT 编程系列(4)
    Effective Modern C++[实践]->优先选用别名声明,而非typedef
    java计算机毕业设计网上教务评教系统源码+系统+数据库+lw文档+mybatis+运行部署
    SpringMVC学习笔记
    ZedGraph设置刻度轴的颜色、刻度文本颜色以及网格线的颜色
    欧标插头EN50075测试项目
    【错误记录】安装 Hadoop 运行环境报错 ( Error: JAVA_HOME is incorrectly set. Please update xxx\hadoop-env.cmd )
    《大学“电路分析基础”课程实验合集.实验三》丨基尔霍夫定律的验证
    java计算机毕业设计ssm+vue灰灰宠物美容网站
    吴恩达深度学习笔记——序列模型与循环神经网络(Sequence Models)
  • 原文地址:https://blog.csdn.net/huanghailiang_ws/article/details/126501894
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号