significa - Archivo BAT para crear Java CLASSPATH
java classpath que es (10)
¿Hay alguna forma más fácil de hacer esto?
Sí;
Desde la versión 6, puede usar comodines de ruta de clase.
javac -cp .;../lib/* yourJavaCodeDir/YourJavaFile.java
Ver también este Q&A. relacionado Q&A.
Quiero distribuir una aplicación de línea de comandos escrita en Java en Windows.
Mi aplicación se distribuye como un archivo zip, que tiene una entrada de directorio lib que tiene los archivos .jar necesarios para invocar mi clase principal. Actualmente, para entornos Unix, tengo un script de shell que invoca el comando java con un CLASSPATH creado al agregar todos los archivos en el directorio lib.
¿Cómo escribo un archivo .BAT con una funcionalidad similar? ¿Cuál es el equivalente de encontrar el comando Unix en el mundo de Windows?
¿Por qué usarías find? Presumiblemente, usted conoce todas las bibliotecas que su archivo jar necesita con anticipación, entonces ¿por qué no solo enumerarlas?
Alternativamente, siempre -Djava.ext.dirs=lib
usar -Djava.ext.dirs=lib
y dejar que recoja todo de esa manera.
Desde 6.0, Java admite classpaths wildcard.
Sintaxis de la ruta de clases de la línea de comandos de Java
Desea utilizar el bucle for en la secuencia de comandos por lotes
@echo off
setLocal EnableDelayedExpansion
set CLASSPATH="
for /R ./lib %%a in (*.jar) do (
set CLASSPATH=!CLASSPATH!;%%a
)
set CLASSPATH=!CLASSPATH!"
echo !CLASSPATH!
Esto realmente me ayudó cuando estaba buscando un script por lotes para iterar a través de todos los archivos en un directorio, se trata de eliminar archivos, pero es muy útil.
Script por lotes de una sola línea para eliminar directorios vacíos
Para ser honesto, use la respuesta de Jon, mucho mejor si todos los archivos están en un directorio, aunque esto podría ayudarlo en otro momento.
Lo que hago cuando lanzo JARs de línea de comandos para Windows / Linux es incrustar todas las bibliotecas JAR dentro de mi JAR usando el comando ANT:
<fileset dir="${module.classes.dir}"/>
<zipfileset src="${endorsed.lib.dir}/myLibrary.jar"/>
De esta forma, las bibliotecas se fusionan con sus archivos de clase.
No es la mejor forma de reutilización binaria, pero si las bibliotecas no son tan pesadas, debe ejecutar su aplicación simplemente llamando a java -jar myApp.jar en cualquier sistema operativo.
Parece que un JAR ejecutable podría funcionar para ti. Si está distribuyendo un ZIP con todos los JAR que necesita su rutina principal, y realmente lo ejecuta en un shell de comandos, quizás podría crear un JAR ejecutable con Main-Class y Classpath definidos en el manifiesto. Todos tus usuarios tienen que hacer doble clic en el JAR y Bob es tu tío.
Puedes usar un poco diferente si usas Maven para construir tu proyecto. Application Assembler Maven Plugin está diseñado para crear iniciadores de aplicaciones Java. Este complemento genera el iniciador de archivos bat para usted y coloca las dependencias en la carpeta especificada. Opcionalmente, el iniciador puede registrar su aplicación como un servicio / demonio.
Este complemento ayuda a mantener las partes CM de su proyecto SECAS.
Una opción para hacer que las cosas sean portátiles es establecer la ruta de clase relativa a la ubicación del archivo por lotes.
En Windows (asumiendo Java 6+, clases en ./bin, jar en ./lib):
@java -classpath %~dp0/bin;%~dp0/lib/* ClassName %1
Una variación si desea que la configuración CLASSPATH se mantenga fuera del script y no haya iniciado el shell con / V, puede hacer algo como esto:
@echo off
FOR /R ./lib %%a in (*.jar) DO CALL :AddToPath %%a
ECHO %CLASSPATH%
GOTO :EOF
:AddToPath
SET CLASSPATH=%1;%CLASSPATH%
GOTO :EOF
Útil para configurar su entorno cuando solo está jugando en la línea de comandos.
SET CLASSPATH=""
FOR /R /lib %%a in (*.jar) DO CALL :AddToPath %%a
echo %CLASSPATH%
java -cp %CLASSPATH% com.a.b.MyClass
pause
:AddToPath
SET CLASSPATH=%1;%CLASSPATH%
GOTO :EOF