java - existe - el servicio especificado se ha marcado para ser eliminado windows 10
¿Cómo pasar propiedades a jar de Powershell? (3)
Intente iniciar utilizando el siguiente patrón:
java -Duser.language=en -jar any.jar
Eso supone que user.language se entiende como una propiedad del sistema. Si lo quiso decir como un argumento de línea de comando, cámbielo a:
java -jar any.jar -Duser.language=en
Estoy realmente sorprendido de que la línea de comandos que mencionaste funcione en absoluto fuera de powershell (aunque he confirmado que también funciona bien para mí, incluso en Linux) y también es un poco extraño que las cosas funcionen de manera diferente dentro y fuera de powershell .
De java -help
:
Usage: java [-options] class [args...]
(to execute a class)
or java [-options] -jar jarfile [args...]
(to execute a jar file)
where options include:
...
-D<name>=<value>
set a system property
...
Así que, básicamente, siempre debe colocar el nombre de archivo JAR directamente después de la opción de línea de comando -jar
y cualquier opción de JVM (como establecer propiedades del sistema con -D
).
He estado usando Powershell-1.0 para las necesidades de línea de comandos por un tiempo, en lugar de cmd.exe. Desafortunadamente, todavía hay algunas advertencias cuando se usa Java. Necesito pasar una propiedad a un contenedor, así:
java -jar -Duser.language=en any.jar
Esta línea funciona bien en cmd.exe, pero no en Powershell, ya que busca otro jar: no se puede acceder al archivo jar user.language = en
Usar citas no ayuda.
¿Es factible en Powershell-1.0, o extraño algo en Java?
Gracias por adelantado,
Saludos,
jgran
Usar comillas funciona bien para mí en PowerShell en Windows 7.
java "-Dmy.property=value" -jar myjar.jar
Tenga cuidado: el nombre del jar debe colocarse justo después de -jar
, y los argumentos que se colocan después de -jar myjar.jar
se pasarán al programa dentro de jarFile.
Eche un vistazo a mi respuesta a esta pregunta . Tenga en cuenta cómo puede usar echoargs.exe para diagnosticar este tipo de problemas. Lo más probable es que la solución sea citar el parámetro, por ejemplo:
java -jar "-Duser.language=en" any.jar
Puede probar eso usando echoargs (de PowerShell Community Extensions ):
echoargs -jar "-Duser.language=en" any.jar
Arg 0 is <-jar>
Arg 1 is <-Duser.language=en>
Arg 2 is <any.jar>