Jak uruchomic program z wiersza poleceń?

Jak uruchomic program z wiersza poleceń?
MA
  • Rejestracja:około 6 lat
  • Ostatnio:ponad 4 lata
  • Postów:19
0

Cześć,
Jestem nobem z javy, ale musze stworzyc dokumentacje funkcjonalną i zaprezentować jak będzie uruchamiany mój program.
Mój program jako pierwszy argument będzie przyjmował plik wejściowy, a jako drugi nazwe pliku, który powinien zostać utworzony.
Myslalem wtedy ze bedzie to:

Kopiuj

java nazwaprogramy plikwejsciowy.txt nazwaplikuwyjsciowego

ale najlepiej zeby to bylo uruchamiane z jakiejs paczki
czyli coś takiego:

Kopiuj
java -jar NazwaPaczki

Jak wtedy podawane sa argumenty? Z gory dziekuje za odpowiedz.

edytowany 1x, ostatnio: marysienka
Koziołek
Moderator
  • Rejestracja:około 18 lat
  • Ostatnio:25 dni
  • Lokalizacja:Stacktrace
  • Postów:6821
1

Argumenty podajesz dokładnie tak samo. Odpal sobie zwykłego linuxowego mana i zobacz jak tam opisane są sposoby uruchomienia programów.


Sięgam tam, gdzie wzrok nie sięga… a tam NullPointerException
MA
java -jar NazwaPaczki plikwejsciowy.txt nazwaplikuwyjsciowego, czyli to zadziala?
Koziołek
Tak. Przy czym pamiętaj, że w jarze musisz mieć manifest wskazujący na klasę, która zawiera metodę main.
stivens
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 3 godziny
1

Jesli dobrze zrozumialem Twoje intencje to zamiast sciezki do plikow w argumentach powinienes uzyc przekierowan stdin/stdout.

Np. java -jar ... < plikwejsciowy.txt > plikwyjsciowy.txt


λλλ
danek
zalezy jak pod spodem obsługuje te argumenty
MA
dlaczego? Bedzie to moj pierwszy "powazny" program w javie... :P
stivens
Po pierwsze to wiele ulatwia bo w samym programie masz zwyczajny stdin i stdout, nie przejmujesz sie plikami. Po drugie mozna to potokowac i np. zrobic cos w stylu find | java | grep | drukarka jednym poleceniem. (byc moze taki konkretnie potok nie ma sensu ale to przyklad)
PerlMonk
  • Rejestracja:około 6 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Warszawa 🐪
  • Postów:1719
4

Zawsze można napisać sobie prosty program i sprawdzić. Powiedzmy, że mamy prosty program:

Kopiuj
public class Main {
	public static void main(String[] args) {
		System.out.println("Hello world");
		
		for (String arg : args) {
			System.out.println("Argument " + arg);
		}
	}

}

W wyniku wywołania polecenia

Kopiuj
java Main

otrzymamy

Kopiuj
Hello world

W wyniku wywołania polecenia

Kopiuj
java Main dupa

otrzymamy

Kopiuj
Hello world
Argument dupa

Jeśli będziemy mieć program w paczce JAR i wywołamy to tak:

Kopiuj
java -jar program.jar dupa

otrzymamy tę samą dupę

Kopiuj
Hello world
Argument dupa

Czyli pierwszy argument bez myślników to nazwa klasy albo paczki a kolejne to argumenty dla programu w Javie.
Wywoływanie programów mamy omówione. Jest jeszcze kilka sposobów uruchomienia programu w Javie, ale to inna sprawa.
Coś jeszcze?


Nie sztuka uciec gdy w dupie sztuciec. 🐪🐪🐪
edytowany 1x, ostatnio: PerlMonk

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.