Java i przekazywanie parametrów (argumentów) przez linię poleceń

Jeżeli chodzi o Javę, to mamy 2 sposoby przekazania argumentów do aplikacji z poziomu linii poleceń. Możemy to wykonać poprzez znane z innych języków argumenty linii poleceń oraz możemy to zrobić przez tzw. atrybuty (z ang. properties).

Najpierw przykładowe wywołanie przykładowej klasy z przekazanymi zarówno argumentami i atrybutami.

java -Dprop1=lorem -Dprop2=”lorem ipsum” PropApp dolor „sit amet”

Przekazujemy tu 2 atrybuty:

  • prop1 o wartości lorem
  • prop2 o wartości lorem ipsum

Przekazujemy również 2 argumenty

  • pierwszy o wartości dolor
  • drugi o wartości sit amet

Czym różnią się oba sposoby? Różnice są znaczące. Jeżeli chodzi o atrybuty to:

  • nadajemy im nazwy
  • kolejność nie gra roli
  • przekazujemy je w postaci -D<nazwa>=<wartość>
  • umieszczamy je po java, a przed nazwą klasy
  • do aplikacji przekazane są oprócz naszych atrybutów, również predefiniowane atrybuty systemowe

Jeżeli chodzi o argumenty, to sytuacja jest dokładnie odwrotna:

  • przekazujemy tylko wartości, bez nazw
  • przekazywane są w kolejności
  • umieszczamy je na końcu wywołania, czyli po nazwie klasy
  • do aplikacji przekazane są tylko te argumentu, które sami zdefiniujemy

W obydwu przypadkach występuje zasada, że wartości ze spacjami przekazujemy zapisane w nawiasach. Teraz zobaczmy, jak je odczytać w aplikacji.

import java.util.Properties;
 
public class PropApp {
    public static void main( String[] argv ) {
        System.out.println( "Atrybuty przekazane przez -D:" );
        Properties oProps = System.getProperties();
        System.out.println( oProps.getProperty("prop1") );
        System.out.println( oProps.getProperty("prop2") );
 
        System.out.println( "Argumenty przekazane przez linie polecen:" );
        System.out.println( argv[0] );
        System.out.println( argv[1] );
    }
}

W efekcie na ekranie konsoli dostajemy:

Atrybuty przekazane przez -D:
lorem
lorem ipsum

Argumenty przekazane przez linie polecen:
dolor
sit amet