BAT批处理命令启动Java打包的Jar没有指定启动类且第三方lib包在主jar外的项目

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

目标

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

项目目录如下

在这里插入图片描述

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

启动脚本编写

@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

第一句:启用变量延迟;
第二句:循环将.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  

若在Linux下则

#!/bin/sh
CP=.
for i in ./lib/*.jar
do
    CP="$i:$CP"
done
java -cp "$CP" com.xxx.mengfusheng.ServerMain &

注意点

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

附注 POM配置

<build>
		<resources>
            <!--指定src/main/resources资源要过滤-->
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
	
		 <plugins>
		 	 <!-- 可执行jar插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <!--这些配置将写入到MANIFEST.MF文件中-->
                    <archive>
                        <!--指定程序入口
                        <manifest>
                            <mainClass>com.xxx.ServerMain</mainClass>
                        </manifest>
                        -->
                        <manifestEntries>
                        		<!-- (配置文件外置目录) -->
                            <Class-Path>resources/</Class-Path>
                            	<!--指定 agentmain 方法所在的类路径-->
                        	<Agent-Class>hotupdate.agent.MyAgent</Agent-Class>
								<!--是否能重定义此代理所需的类-->
                        	<Can-Redefine-Classes>true</Can-Redefine-Classes>
								<!--是否能重新转换此代理所需的类-->
                        	<Can-Retransform-Classes>true</Can-Retransform-Classes>
                        </manifestEntries>
                        <manifest>
                        	<addClasspath>true</addClasspath>
                    	</manifest>
							
                    </archive>
                    <!-- 过滤掉不希望包含在jar中的文件  --> 
                    <excludes>
                        <exclude>**/*.xml</exclude>
                        <exclude>**/*.txt</exclude>
                        <exclude>**/*.properties</exclude>
                        <exclude>**/*/*.json</exclude>
                    </excludes>
                </configuration>
            </plugin>
            <!-- maven资源文件复制插件 
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.7</version>
                <executions>
                    <execution>
                        <id>copy-config</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}/resources</outputDirectory>
                            <resources>
                                <resource>
                                    <directory>src/main/resources</directory>
                                    <includes>
                                        <exclude>**/*.xml</exclude>
                        				<exclude>**/*.txt</exclude>
				                        <exclude>**/*.properties</exclude>
				                        <exclude>**/*/*.json</exclude>
                                    </includes>
                                    <filtering>true</filtering>
                                </resource>
                            </resources>
                            <encoding>UTF-8</encoding>
                        </configuration>
                    </execution>
                </executions>
            </plugin>-->
		 
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.6.1</version>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
					<encoding>UTF-8</encoding>
				</configuration>
			</plugin>
		</plugins>
	</build>

maven打包的指令如下:

mvn dependency:copy-dependencies -DoutputDirectory=target/lib package
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值