Предположив, что вы на Windows, я написал пакетный скрипт, чтобы сделать это.
Скопируйте нижеуказанный контент в source.bat
, место source.bat
в тот же каталог, где находились все файлы .java
и запускайте его.
@echo off
@setlocal enabledelayedexpansion
for /f "usebackq delims=" %%f in (`dir /s /b *.java`) do (
set file=%%~nxf
for /f "usebackq delims=" %%p in (`findstr package %%~nxf`) do (
set package=%%p
set package=!package:*.java:=!
set package=!package:package =!
set package=!package:;=!
set package=!package:.=\!
echo Expanding !package!...
mkdir !package!
xcopy /f %%~nxf !package!
)
)
@endlocal
Однако, если вы на Unix/Linux, вот bash
сценарий. Я уверен, что это можно сделать гораздо лучше и лаконично, но это определенно работает.
#! /bin/bash
for file in *.java
do
package=`grep -h 'package' $file`
package=`echo $package | sed 's/package//g'`
package=`echo $package | sed 's/;//g'`
package=`echo $package | sed 's/\./\//g'`
echo Expanding $package...
mkdir -p $package
cp $file $package
done
Значит, ваши .java-файлы не в правильной структуре? Это может быть глупый вопрос, но: почему? –
, если вы укажете папку вывода так же, как корневую папку исходных файлов, javac поместит файлы классов вместе с исходными файлами. – Manish
@ManishSharma, это не то, о чем спрашивает OP. – adarshr