bat 编译 .java_批处理编译执行java源码 - BAT原创&转载 - 批处理之家 批处理_BAT脚本_PowerShell_VBS_CMD_DOS_Perl_Python - Powere...

该脚本主要用于自动化处理Java项目,包括将当前目录及其子目录下的所有jar添加到classpath,编译所有Java源文件并根据包结构创建对应的bin目录,以及执行指定的主类。它还包含了错误处理和用户交互提示,确保Java环境已安装并正确配置。
摘要由CSDN通过智能技术生成

::添加当前目录下及其子目录下的所有jar到classpath中

::编译当前目录下及其子目录下的所有源文件

::根据源文件的包结构在bin下创建对应的目录,然后将生成的class文件放进对应的目录下

@echo off&setlocal enabledelayedexpansion&&color 1f

if exist build.lst del build.lst

if exist bin rd /s /q bin

md bin

java -version

if %errorlevel% neq 0 goto EnvAlert

set line=TestClientTool coded by xiaoyong12

set display=

for /l %%i in (0,1,50) do (

if not !dispaly! == !line! (set display=!display!!line:~%%i,1!) else ( set display= )

title !display!

ping/n 1 127.1>nul

)

echo/

set line=请输入主类名(如com.test.Test):

for /l %%i in (0,1,22) do (

set/p=!line:~%%i,1!

ping/n 1 127.1>nul

)

::添加所有jar文件到classpath中

set /p class=

set var=

for /f %%i in ('dir /b /s %cd%') do (

if "%%~xi" == ".jar" set var=!var!%%i;

)

set var=!var!.;

set classpath=%classpath%;!var!

cls

::编译所有java源文件,如果源文件有package结构,标志为0,没有package结构,标志为1

for /f %%i in ('dir /b /s %cd%') do (

if "%%~xi" == ".java" (

find "package" %%i>nul

if !errorlevel! equ 0  (

for /f "tokens=1,2 skip=2" %%j in ('find "package" %%i') do (

echo %%i  0  %%k>>build.lst

)

) else (

echo %%i 1 >>build.lst

)

)

)

set curdir=%cd%

for /f "tokens=1,2,3" %%i in (build.lst) do  (

if %%j equ 1 (

javac %%i

if !errorlevel! neq 0 ( echo %%i文件编译发生错误>>error.lst ) else (

move "%%~dpni.class" "!cd!\bin"  )

) else  (

javac %%i

if !errorlevel! neq 0 ( echo %%i文件编译发生错误>>error.lst ) else (

set package=%%k

set package=!package:;=!

call :makedir !package!

set package=!package:.=\!

move "%%~dpni.class" "!curdir!\bin\!package!"

cd /d !curdir!

)

)

)

cd /d !curdir!

copy  *.xml  !curdir!\bin >nul 2>nul

copy  *.properties  !curdir!\bin >nul 2>nul

cd /d !curdir!/bin

java  %class%

if %errorlevel% equ 0 goto stopped  else (

pause>nul )

:alert

cls

for /l %%i in (1,1,8) do (

echo.

)

echo 请确保%class%.java文件在当前目录下,并且所引用的所有jar包在当前/lib目录下,重新执行!

ping /n 4 127.0.0.1>nul&exit

:stopped

ping/n 3 127.1>nul&echo/

set line=执行结束,将要编译后类文件清除......

for /l %%i in (0,1,20) do (

set/p=!line:~%%i,1!

ping/n 1 127.1>nul

)

cd /d !curdir!

del build.lst >nul

echo Y|rd /s bin>nul && del /s /q /f *.class>nul 2>nul && ping/n 4 127.1>nul

echo/&echo 按任意键退出......

pause>nul

exit

:EnvAlert

cls

echo 请先安装java运行环境

ping /n 4 127.0.0.1>nul&exit[code]::创建包结构目录

:makedir

set dir=%1

cd /d !curdir!\bin

:continue

for /f "tokens=1,* delims=." %%i in ("!dir!") do (

if not exist %%i  md %%i

cd %%i

set dir=%%j&goto continue

)

goto :eof

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值