Como faço para passar parâmetros para um arquivo jar no momento da execução?

101

Como passo os parâmetros para um arquivo JAR no momento da execução?

Nwinkler
fonte

Respostas:

144

Para passar argumentos para o jar:

java -jar myjar.jar one two

Você pode acessá-los no método main () de "Main-Class" (mencionado no manifest.mfarquivo de um JAR).

String one = args[0];  
String two = args[1];  
Reji
fonte
40

A documentação JAVA diz :

java [opções] -jar arquivo.jar [argumento ...]

e

... Argumentos não opcionais após o nome da classe ou nome do arquivo JAR são passados ​​para a função principal ...

Talvez você tenha que colocar os argumentos entre aspas simples.

Xn0vv3r
fonte
7
Este link está morto.
bfontaine
1
Aqui está um link funcional que mostra o uso do utilitário jar do Java - docs.oracle.com/javase/tutorial/deployment/jar . Felicidades!
realPK
15

Você pode fazer isso com algo assim, então, se nenhum argumento for especificado, ele continuará de qualquer maneira:

public static void main(String[] args) {
    try {
        String one = args[0];
        String two = args[1];
    }
    catch (ArrayIndexOutOfBoundsException e){
        System.out.println("ArrayIndexOutOfBoundsException caught");
    }
    finally {

    }
}

Em seguida, inicie o aplicativo:

java -jar myapp.jar arg1 arg2
lanches
fonte
21
Você nunca deve usar exceções para orientar seu código. Em vez disso, você deve verificar o comprimento do array antes de acessá-lo!
chuck258
Bem, se o programa deve SEMPRE ter um ou mais parâmetros, não ter nenhum é IMHO um caso legítimo para usar uma exceção.
MikeW
6
java [ options ] -jar file.jar [ argument ... ]

se você precisar passar o arquivo de propriedades log4j, use a opção abaixo

-Dlog4j.configurationFile=directory/file.xml


java -Dlog4j.configurationFile=directory/file.xml -jar <JAR FILE> [arguments ...]
Bachan Joseph
fonte