Скомпилируйте CLASSPATH в пакетном файле Windows

В системах Unix очень легко скомпилировать CLASSPATH, используя find:

LIBDIR=`find lib/ -name \*.jar`
for DIR in $LIBDIR:
do
    CLASSPATH="$CLASSPATH:$DIR"
done

java -classpath $CLASSPATH com.example.MyClass

Каким будет aquivalent в пакетном файле Windows?

11.12.2008 12:41:45
Почему бы не использовать инструмент сборки, такой как муравей или мавен? Они могут компилировать записи пути к классам независимо от платформы.
Martin OConnor 11.12.2008 13:37:48
2 ОТВЕТА
РЕШЕНИЕ

То же самое может быть достигнуто с Windows XP на:

setlocal ENABLEDELAYEDEXPANSION
FOR /R .\lib %%G IN (*.jar) DO set CLASSPATH=!CLASSPATH!;%%G

java -classpath %CLASSPATH% com.example.MyClass
4
11.12.2008 12:58:26
Это не работает в Windows XP, если вы сначала не запустили cmd / v
kgiannakakis 11.12.2008 13:01:31
Это действительно так, если вы устанавливаете переменную ENABLEDELAYEDEXPANSION, как описано выше (я забыл добавить ее изначально, а значит и редактировать) - просто протестировали ее несколько секунд назад.
MrG 11.12.2008 13:03:39
Имейте в виду, что если у вас длинный путь к классам, то вы можете получить сообщение об ошибке «слишком длинная строка ввода» в Windows .... Может быть, у Micro $ oft есть способ заставить людей на самом деле указывать и щелкать исполняемый файл jar, а не (по-видимому) злой способ про-linux командной строки :-)
dm76 15.07.2010 14:27:34

Единственный способ сделать это - использовать отложенное расширение переменной среды. Вы можете сделать это, запустив

cmd /v

Тогда вы можете запустить:

set var=.
FOR /r %%d IN (*.jar) DO SET var=!var!;%%d
set CLASSPATH=%var%
1
11.12.2008 12:57:24