Execute um aplicativo Java na linha de comando
1. Visão geral
Normalmente, todo aplicativo significativo inclui um ou mais arquivos JAR como dependências. No entanto, há momentos em que o próprio arquivo JAR representa um aplicativo independente ou um aplicativo da web.
Vamos nos concentrar no cenário de aplicativo independente neste artigo. Doravante, vamos nos referir a ele como um aplicativo JAR.
Neste tutorial, aprenderemos primeiro como criar um aplicativo JAR. Mais tarde, aprenderemos comorun a JAR application with or without command-line arguments.
2. Crie um aplicativoJAR
AJAR file pode conter uma ou mais classes principais. Each main class is the entry point of an application. Portanto, teoricamente, um arquivo JAR pode conter mais de um aplicativo, mas deve conter pelo menos uma classe principal para poder executar.
A JAR file can have one entry point set in its manifest file. Nesse caso, o arquivo JAR é umexecutable JAR. A classe principal deve ser incluída nesse arquivo JAR.
Primeiro de tudo, vamos ver um exemplo rápido de como compilar nossas classes e criar um JAR executável com um arquivo de manifesto:
$ javac com/example/jarArguments/*.java
$ jar cfm JarExample.jar ../resources/example_manifest.txt com/example/jarArguments/*.class
Um JAR não executável é simplesmente um arquivo JAR que não possui umMain-Class definido no arquivo de manifesto. Como veremos mais tarde, ainda podemos executar uma classe principal que está contida no próprio arquivo JAR.
Aqui está como criaríamos um JAR não executável sem um arquivo de manifesto:
$ jar cf JarExample2.jar com/example/jarArguments/*.class
3. Argumentos da linha de comando Java
Assim como qualquer aplicativo, um aplicativo JAR aceita qualquer número de argumentos, incluindo zero argumentos. Tudo depende da necessidade do aplicativo.
Isso permite ao usuáriospecify configuration information when the application is launched.
Como resultado, o aplicativo pode evitar valores codificados e ainda pode lidar com muitos casos de uso diferentes.
Um argumento pode conter caracteres alfanuméricos, caracteres unicode e possivelmente alguns caracteres especiais permitidos pelo shell, por exemplo ‘@ '.
Arguments are separated by one or more spaces. Se um argumento precisar conter espaços, os espaços deverão ser colocados entre aspas. Aspas simples ou duplas funcionam bem.
Geralmente, para um aplicativo Java típico, ao invocar o aplicativo, o usuário insere argumentos da linha de comandos após o nome da classe.
No entanto, nem sempre é o caso para aplicativos JAR.
Como já discutimos, o ponto de entrada de uma classe principal Java émain method. Osarguments are all Stringse são passados para o método principal como uma matrizString.
Dito isso, dentro do aplicativo, podemos converter qualquer elemento da matrizString para outros tipos de dados, comochar,int,double, seus wrapper classes, ou outros tipos apropriados.
4. Execute umJAR Executável com Argumentos
Vejamos a sintaxe básica para executar um arquivo JAR executável com argumentos:
java -jar jar-file-name [args…]
O JAR executável criado anteriormente é um aplicativo simples que apenas imprime os argumentos passados. Podemos executá-lo com qualquer número de argumentos. Abaixo está um exemplo com dois argumentos:
$ java -jar JarExample.jar "arg 1" [email protected]
Veremos a seguinte saída no console:
Hello example Reader in JarExample!
There are 2 argument(s)!
Argument(1):arg 1
Argument(2):[email protected]
Portanto,when invoking an executable JAR, we don’t need to specify the main class name on the command line. Simplesmente adicionamos nossos argumentos após o nome do arquivo JAR. Se fornecermos um nome de classe após o nome do arquivo JAR executável, ele simplesmente se tornará o primeiro argumento para a classe principal real.
Na maioria das vezes, um aplicativo JAR é um JAR executável. Um JAR executável pode ter no máximo uma classe principal definida emmanifest file.
Consequentemente, outros aplicativos no mesmo arquivo JAR executável não podem ser definidos no arquivo de manifesto, mas ainda podemos executá-los a partir da linha de comando, assim como faríamos para um JAR não executável. Veremos exatamente como na próxima seção.
5. Execute umJAR não executável com argumentos
Para executar um aplicativo em um arquivo JAR não executável, temos que usar a opção-cp em vez de-jar. Usaremos a opção-cp (abreviação de classpath) para especificar o arquivo JAR que contém o arquivo de classe que queremos executar:
java -cp jar-file-name main-class-name [args…]
Como você pode ver, in this case, we’ll have to include the main class name in the command line, followed by arguments.
O JAR não executável criado anteriormente contém o mesmo aplicativo simples. Podemos executá-lo com qualquer argumento (incluindo zero). Aqui está um exemplo com dois argumentos:
$ java -cp JarExample2.jar com.example.jarArguments.JarExample "arg 1" [email protected]
E, assim como vimos acima, veremos a seguinte saída:
Hello example Reader in JarExample!
There are 2 argument(s)!
Argument(1):arg 1
Argument(2):[email protected]
6. Conclusão
Neste tutorial, aprendemos duas maneiras de executar um aplicativo JAR na linha de comandos com ou sem argumentos.
Também demonstramos que um argumento pode conter espaços e caracteres especiais (quando permitido pelo shell).
Como sempre, o código dos exemplos está disponível emGitHub.