Jak uruchomić plik jar w systemie Windows 10. Praca z Javą w wierszu poleceń

Leki przeciwgorączkowe dla dzieci są przepisywane przez pediatrę. Ale zdarzają się sytuacje awaryjne dotyczące gorączki, kiedy dziecko musi natychmiast otrzymać lekarstwo. Wtedy rodzice biorą na siebie odpowiedzialność i stosują leki przeciwgorączkowe. Co wolno dawać niemowlętom? Jak obniżyć temperaturę u starszych dzieci? Jakie leki są najbezpieczniejsze?

Wielu początkujących programistów ma do czynienia z następującym pytaniem: „Stworzyłem swoją aplikację w IDE, teraz jak sprawić, by działała z wiersza poleceń poza IDE?”. Innym pytaniem, które może się pojawić, jest „Jak mogę rozpowszechniać tę aplikację wśród innych użytkowników bez jednoczesnego udostępniania im całego IDE?”.

Odpowiedzi na te pytania są stosunkowo proste, ale nie zawsze oczywiste. W ten dokument odpowiada na nie, demonstrując podstawy korzystania z IDE do przygotowania aplikacji do dystrybucji i wdrażania. Ponadto dokument ten zawiera informacje, które mogą być potrzebne do skonfigurowania systemu programisty (lub które będą musiały zostać przekazane użytkownikom aplikacji). Pokażemy kilka różnych podejść do wdrażania aplikacji, umożliwiając użytkownikom dostęp do niej poprzez:

  • Dwukrotne kliknięcie pliku archiwum Java (JAR) aplikacji.
  • Wywołanie aplikacji z wiersza poleceń.
  • Wywołanie aplikacji z pliku skryptu.
  • Korzystanie z Java Web Start.

Ten samouczek wymaga oprogramowania i materiałów wymienionych w poniższej tabeli.

Tworzenie wykonywalnego pliku JAR

Ta część samouczka pokazuje, jak utworzyć redystrybucyjną aplikację w środowisku IDE, a następnie uruchomić aplikację poza środowiskiem IDE. Aplikację pakujemy do pliku wykonywalnego JAR.

Plik JAR to plik archiwum, który może zawierać pliki i foldery. Pliki JAR są podobne do plików ZIP, ale pliki JAR mogą mieć dodatkowe atrybuty przydatne podczas dystrybucji aplikacji Java. Te atrybuty obejmują podpis cyfrowy plików JAR, dodatkową kompresję, zgodność między platformami i tak dalej.

W tym ćwiczeniu tworzymy projekt IDE, a następnie umieszczamy w nim dwa wstępnie napisane pliki źródłowe Java. Następnie skompilujemy klasy i stworzymy wykonywalny plik JAR. Następnie zobaczymy, jak uruchamiać pliki JAR poza środowiskiem IDE.

Klasy użyte w tym samouczku implementują funkcje narzędzia GNU grep, którego można użyć do wyszukiwania tekstu lub wzorców wyrażeń regularnych w plikach tekstowych. Ten projekt zawiera zarówno wersję aplikacji z wiersza poleceń, jak i wersję, która używa GUI, który pokaże Ci różne sposoby uruchamiania aplikacji.

Budowanie projektu przy użyciu istniejących plików kodu źródłowego

  1. Dystrybucja aplikacji wśród innych użytkowników

    Po potwierdzeniu, że Twoja aplikacja działa poza środowiskiem IDE, możesz przejść do jej dystrybucji.

    Notatka. Jeśli Twoja aplikacja jest zależna od dodatkowych bibliotek innych niż zawarte w JDK, musisz je uwzględnić w swojej dystrybucji (nie dotyczy tego przykładu). Względne ścieżki do tych bibliotek są dodawane do wpisu ścieżki klasy pliku manifestu JAR, gdy aplikacja jest opracowywana w środowisku IDE. Jeśli te dodatkowe biblioteki nie zostaną znalezione w określonej ścieżce klasy (tj. Ścieżce względnej) podczas uruchamiania, aplikacja nie zostanie uruchomiona.
    Tworzyć Archiwum ZIP zawierający plik JAR i bibliotekę, a następnie prześlij to plik zip użytkowników. Poinstruuj użytkowników, aby rozpakowali to archiwum ZIP, tak aby plik JAR i pliki JAR biblioteki znajdowały się w tym samym folderze. Uruchom plik jar aplikacji.

    Uruchamianie aplikacji Java

    Celem tego ćwiczenia jest zademonstrowanie niektórych sposobów uruchamiania aplikacji z wiersza poleceń.

    To ćwiczenie pokazuje, jak uruchomić aplikację Java na dwa sposoby:

    • Uruchamianie polecenia java z wiersza poleceń.
    • Użycie skryptu do wywołania klasy w pliku JAR.

    Uruchamianie aplikacji z wiersza poleceń

    Aplikację można uruchomić z wiersza poleceń za pomocą polecenia java. Jeśli chcesz uruchomić wykonywalny plik JAR, użyj opcji -jar polecenia.

    Na przykład, aby uruchomić aplikację AnotherGrep, wykonaj następujące czynności:

    1. Otwórz okno terminala. W systemach Microsoft Windows można to zrobić, klikając przycisk "Start" i wybierając "Uruchom...", wpisując cmd w polu "Otwórz:" i klikając przycisk "OK".
    2. Przejdź do katalogu PROJECT_HOME/dist (za pomocą polecenia cd).
    3. Wprowadź następujący wiersz, aby uruchomić główną klasę aplikacji: java -jar AnotherGrep.jar

    Jeśli postępujesz zgodnie z tymi instrukcjami, a aplikacja się nie uruchamia, prawdopodobnie powinieneś wykonać jedną z następujących czynności:

    Uruchamianie aplikacji ze skryptu

    Jeśli aplikacja, którą chcesz dystrybuować, jest aplikacją konsolową, wygodniejsze może być uruchomienie jej ze skryptu, zwłaszcza jeśli aplikacja wymaga do uruchomienia długich i złożonych argumentów. W tej sekcji używamy konsolowej wersji Grepa, w której musimy przekazać argumenty (wzorzec wyszukiwania i listę plików) do pliku JAR wywoływanego w naszym skrypcie. Aby zmniejszyć ilość pisania w wierszu poleceń, używamy prostego skryptu odpowiedniego do uruchomienia aplikacji testowej.

    Pierwszym krokiem jest zmiana klasy głównej w aplikacji na konsolową wersję klasy i przebudowanie pliku JAR:

    1. W oknie Projekty IDE kliknij prawym przyciskiem myszy węzeł projektu (AnotherGrep) i wybierz Właściwości.
    2. Wybierz węzeł Uruchom i zmień właściwość klasy głównej na innygrep.Grep (z innegogrep.xGrep). Kliknij przycisk OK, aby zamknąć okno Właściwości projektu.
    3. Ponownie kliknij prawym przyciskiem myszy węzeł projektu i wybierz opcję Wyczyść i zbuduj projekt.

    Po wykonaniu tych kroków plik JAR zostanie odbudowany, a atrybut Main-Class w manifeście pliku JAR będzie wskazywał na anothergrep.Grep .

    skrypt bash - dla komputerów z systemem UNIX i Linux

    W folderze, w którym została wyodrębniona zawartość pliku, możesz znaleźć skrypt bash o nazwie grep.sh . Przyjrzyjmy się temu:

    #!/bin/bash java -jar dist/AnotherGrep.jar [e-mail chroniony]

    Pierwsza linia określa, którego interpretera poleceń należy użyć do zinterpretowania tego skryptu. Drugi wykonuje plik JAR utworzony przez IDE w folderze PROJECT_HOME/dystans . [e-mail chroniony] po prostu kopiuje wszystkie argumenty przekazane do skryptu, ujmując każdy z nich w cudzysłów.

    Ten skrypt zakłada, że ​​pliki binarne Java są częścią zmiennej środowiskowej PATH. Jeśli ten skrypt nie działa na Twoim komputerze, zobacz .

    Aby uzyskać więcej informacji na temat skryptów interpretera bash, zobacz .

    Skrypt .bat dla komputerów z systemem Windows

    Na komputerach z systemem Microsoft Windows do plików wsadowych można przesłać jednocześnie maksymalnie dziewięć argumentów. Jeśli jest więcej niż dziewięć argumentów, plik JAR będzie musiał zostać wykonany wiele razy.

    Skrypt do tego może wyglądać tak:

    @echo off set jarpath="dist/AnotherGrep.jar" set pattern="%1" shift:loop if "%1" == "" goto:allprocessed set files=%1 %2 %3 %4 %5 %6 %7 %8 %9 java -jar %jarpath% %pattern% %files% dla %%i in (0 1 2 3 4 5 6 7 8) wykonaj przesunięcie goto:loop:allprocessed

    Ten skrypt można znaleźć pod nazwą grep.bat w folderze, w którym została wyodrębniona zawartość archiwum, jeśli chcesz zobaczyć go w akcji.

    Dziewięć argumentów znajduje się w pliku wsadowym jako % , gdzie musi mieć wartość w granicach<0-9>. %0 jest zarezerwowane dla nazwy skryptu.

    Widać, że do programu przekazywanych jest jednocześnie tylko dziewięć argumentów (w jednej pętli). Instrukcja for po prostu przesuwa argumenty o dziewięć, aby przygotować je do następnej pętli. Pętla kończy się, gdy w instrukcji if zostanie znaleziony pusty argument pliku (oznacza to, że nie ma nowych plików do przetworzenia).

    Więcej informacji na temat skryptów wsadowych można znaleźć pod adresem .

    Pakowanie aplikacji dla Java Web Start

    Java Web Start to technologia służąca do uruchamiania aplikacji Java z przeglądarki internetowej za pomocą jednego kliknięcia. Zobacz Włączanie Java Web Start w NetBeans IDE, aby uzyskać szczegółowe informacje na temat pakowania aplikacji do wdrożenia za pomocą Java Web Start. Tutaj przedstawiamy tylko krótki opis kroków wymaganych do wdrożenia aplikacji za pomocą Java Web Start.

    1. Kliknij prawym przyciskiem węzeł projektu w oknie Projekty i wybierz Właściwości.
    2. Na karcie Web Start okna Project Properties zaznacz pole wyboru Włącz Web Start.
    3. Wybierz Lokalne wykonanie z listy rozwijanej Codebase, ponieważ będziemy testować tylko lokalne wykonanie.
      Zachowaj wszystkie inne ustawienia domyślne i kliknij OK.
    4. Kliknij prawym przyciskiem myszy węzeł projektu i wybierz opcję Wyczyść i zbuduj projekt.
      To polecenie IDE usunie wszystkie wcześniej skompilowane pliki i kompilacje, ponownie skompiluje aplikację i skompiluje projekt z nowymi ustawieniami.
    5. Poza IDE otwórz folder PROJECT_HOME/dist , a następnie otwórz plik launch.html w przeglądarce.
      Pojawi się test. Strona HTML za pomocą przycisku Uruchom.
    6. Naciśnij przycisk Uruchom, aby otworzyć aplikację.
      Będziesz mógł zobaczyć, że Java jest załadowana, a aplikacja działa.

      Notatka. Niektóre przeglądarki najpierw przekierowują użytkowników do strony pobierania oprogramowania Java.

    Określanie skojarzeń plików JAR

    Na większości komputerów plik wykonywalny JAR można uruchomić, klikając go dwukrotnie. Jeśli nic się nie dzieje po dwukrotnym kliknięciu pliku JAR, może to być spowodowane jedną z dwóch następujących przyczyn:

    • Typ pliku JAR nie jest powiązany ze środowiskiem Java Runtime Environment (JRE) na tym komputerze.

      Jeśli typ pliku JAR jest powiązany ze środowiskiem JRE, ikona reprezentująca ten plik musi zawierać logo Java.

    • Typ pliku JAR jest mapowany do środowiska JRE, ale opcja -jar nie jest częścią polecenia przekazywanego do środowiska JRE po dwukrotnym kliknięciu ikony.

    Notatka. Czasami skojarzenia plików JAR są przełączane przez zainstalowane oprogramowanie, na przykład oprogramowanie do przetwarzania plików zip.

    Sposób powiązania typu pliku JAR z programem uruchamiającym java zależy od systemu operacyjnego.

    Upewnij się, że masz zainstalowaną jedną z wersji JRE na swoim komputerze. Należy użyć wersji 1.4.2 lub nowszej. Aplikacji Java nie można uruchamiać na komputerach, na których nie zainstalowano platformy Java. (Jeśli zainstalowany jest zestaw Java Development Kit (JDK), środowisko JRE jest również instalowane razem z nim. Jeśli jednak program jest rozpowszechniany wśród osób niebędących programistami, użytkownicy mogą nie mieć JRE lub JDK.)

    • W systemie Windows XP zainstalowany Wersja Java można to sprawdzić wybierając „Start” > „Panel sterowania” > („Dodaj lub usuń programy”) (powinna być na przykład Java (TM) 6 Update 33).
    • Na Windows Vista lub 7 zainstalowaną wersję Java można sprawdzić wybierając „Start” > „Panel sterowania” > („Programy i funkcje”) (należy określić np. Java (TM) 6 Update 33).

    Jeśli komputer nie jest wyposażony w platformę Java, środowisko JRE można pobrać z witryny pobierania Java SE.

    Jeśli masz go już na swoim komputerze, ale skojarzenie plików nie działa, postępuj zgodnie z instrukcjami, aby dodać skojarzenie plików JAR w systemie Microsoft Windows:

    1. Wybierz „Start” > „Panel sterowania”.
    2. (Dotyczy tylko systemu Windows Vista). Kliknij „Panel sterowania” > „Programy”.

    3. W systemie Windows Vista lub 7 kliknij Programy domyślne i wybierz Skojarz typ pliku lub protokół z programem.
    4. (W systemie Windows XP w sekcji Szczegóły okna dialogowego kliknij Zmień program).
    5. W oknie dialogowym Wybór programu wybierz opcję Binarny Java Platform SE.
    6. Kliknij przycisk "OK", aby wyjść z okna dialogowego "Wybierz program".
    7. Kliknij przycisk Zamknij, aby zamknąć okno dialogowe Opcje folderów (w systemie Windows XP) lub okno dialogowe umożliwiające powiązanie typu pliku lub protokołu z określonymi programami (w systemie Windows 7).

    Notatka. Jeśli pliki JAR są powiązane z plikiem binarnym Java Platform SE w systemie, ale dwukrotne kliknięcie nadal nie powoduje uruchomienia pliku JAR, może być konieczne określenie opcji -jar w powiązaniu plików.

    Aby określić opcję -jar w skojarzeniu plików w systemie Microsoft Windows XP, wykonaj następujące kroki:

    1. Wybierz „Start” > „Panel sterowania”.
    2. W systemie Windows XP kliknij dwukrotnie „Opcje folderów” i wybierz kartę „Typy plików”.
    3. Z listy Zarejestrowane typy plików wybierz plik JAR.
    4. W sekcji Szczegóły okna dialogowego kliknij Zaawansowane.
    5. W oknie dialogowym Edytuj właściwości typu pliku kliknij Edytuj....
    6. W polu tekstowym „Aplikacja wykonująca akcję” dodaj następujący wiersz na końcu ścieżki JRE: -jar „%1” %* Następnie pole powinno zawierać tekst podobny do następującego: „C:\Program Pliki\Java\jre1.6.0_33\bin\javaw.exe" -jar "%1" %*
    7. Kliknij przycisk OK, aby wyjść z okna dialogowego Zmiana typu operacji.
    8. Kliknij przycisk OK, aby wyjść z okna dialogowego Edytuj właściwości typu pliku.
    9. Kliknij przycisk Zamknij, aby zamknąć okno dialogowe Opcje folderów.

    Notatka. Począwszy od systemu Windows Vista rozszerzone skojarzenia plików można konfigurować za pomocą RegEdit. Aby uzyskać więcej informacji, zobacz Co się stało z oknem dialogowym typów plików? .

    W systemach UNIX i Linux procedura zmiany skojarzeń plików zależy od używanego środowiska graficznego (takiego jak GNOME lub KDE). Spójrz na ustawienia obszaru roboczego lub przeczytaj dokumentację obszaru roboczego.

    Ustawianie zmiennej środowiskowej PATH

    Jeśli komputer nie może uruchomić klasy Java lub pliku JAR bez określenia położenia JDK lub JRE, może być konieczna zmiana wartości systemowej zmiennej środowiskowej PATH.

    Podczas pracy w systemie Microsoft Windows procedura ustawiania zmiennej PATH zależy od używanej wersji systemu Windows.

    Poniżej przedstawiono kroki, aby ustawić zmienną PATH na System Windows PD:

    1. Wybierz „Start” > „Panel sterowania” i kliknij dwukrotnie „System”.
    2. W oknie dialogowym Właściwości systemu wybierz kartę Zaawansowane.
    3. Kliknij kartę Zmienne środowiskowe.
    4. Na liście zmiennych środowiskowych użytkownika wybierz PATH i kliknij przycisk Edytuj.
    5. Dodaj lokalizację JRE na końcu listy ścieżek. Lokalizacje na liście są oddzielone średnikami (;).
      Na przykład, jeśli środowisko JRE znajduje się w C:\Program Files\Java\jdk1.6.0_23, dodaj następujący na końcu zmiennej PATH: C:\Program Files\Java\jdk1.6.0_23\bin
    6. Kliknij przycisk OK, aby zamknąć okno dialogowe Zmienne środowiskowe, a następnie kliknij przycisk OK, aby zamknąć okno dialogowe Właściwości systemu.

    Podczas pracy w system operacyjny UNIX lub Linux, sposób zmiany zmiennej środowiskowej PATH zależy od używanego programu interpretera poleceń. Więcej informacji można znaleźć w dokumentacji interpretera poleceń.

    Co dalej?

    Więcej informacji na temat pracy z NetBeans IDE można znaleźć w witrynie NetBeans.

    Więcej informacji na temat tworzenia aplikacji Java w środowisku IDE, w tym zarządzania ścieżką klas, można znaleźć w dokumencie

Teraz nikt nie tworzy programów w konsoli. Używając swojego ulubionego IDE, programista czuje się nieswojo na czyimś komputerze, gdzie go nie ma.
Decydując się na zrozumienie pracy Anta i Mavena, nie udało mi się zbudować aplikacji bez nich w konsoli.
W tym artykule starałem się dopasować wszystkie etapy projektowania aplikacji demonstracyjnej, aby nie szukać pomocy przy każdym poleceniu w Internecie.

Od prostych do...

Każdy program jest zwykle zawarty w osobnym katalogu. Moją zasadą jest utworzenie co najmniej dwóch folderów w tym katalogu: src i bin. Pierwsza zawiera kody źródłowe, druga zawiera wynik kompilacji. Te foldery będą miały strukturę katalogów w zależności od pakietów.

Jeden plik

Możesz to zrobić bez dodatkowych folderów.
Weźmy plik.
01 02 03 04 05 06 07 08 09 public class HelloWorld ( public static void main(String args) ( System.out.println("Hello World!"); Calculator calc=new Calculator(); System.out.println("2+2="+calc.sum (2,2)); ) )
Przejdź do katalogu, w którym znajduje się ten plik i wykonaj polecenia.
javac HelloWorld.java W tym folderze pojawi się plik HelloWorld.class. Więc program jest skompilowany. Aby to rozpocząć
java -ścieżka klas . Witaj świecie

Oddzielanie binariów od źródeł

Teraz zrobimy to samo, ale z katalogami. Stwórzmy katalog HelloWorld z dwoma folderami src i bin.
Kompilacja
javac -d bin src/HelloWorld.java Tutaj wskazaliśmy, że pliki binarne zostaną zapisane w oddzielnym folderze bin i nie będą mylone ze źródłami.

Uruchamiamy
java -classpath ./bin HelloWorld

Używamy pakietów

A potem nagle program przestanie być tylko HelloWorld. Pakietom najlepiej nadać znaczącą i niepowtarzalną nazwę. To doda ten program do innego projektu bez konfliktu nazw. Po przeczytaniu niektórych artykułów możesz pomyśleć, że nazwa pakietu koniecznie potrzebuje domeny. To nie jest prawda. Domeny to wygodny sposób na osiągnięcie wyjątkowości. Jeśli nie masz własnej domeny, użyj konta w serwisie (na przykład ru.habrahabr.mylogin). Będzie wyjątkowy. Pamiętaj, że nazwy pakietów muszą być pisane małymi literami. I unikaj używania znaków specjalnych. Problemy pojawiają się z powodu różnych platform i systemów plików.

Umieśćmy naszą klasę w pakiecie o nazwie com.qwertovsky.helloworld. Aby to zrobić, dodaj linię na początku pliku
pakiet com.qwertovsky.helloworld; Utwórzmy dodatkowe katalogi w katalogu src, aby ścieżka do pliku wyglądała tak: src/com/qwertovsky/helloworld/HelloWorld.java.
Kompilacja
javac -d bin src/com/qwertovsky/helloworld/HelloWorld.java Katalog bin automatycznie będzie miał strukturę podobną do src.
HelloWorld "---bin" "---com" "---qwertovsky" "---helloworld" "---HelloWorld.class "---src"---com "---qwertovsky"-- -helloworld "---HelloWorld.java Run
java -classpath ./bin com.qwertovsky.helloworld.HelloWorld

Jeśli w programie jest kilka plików

Zmieńmy program. Nie zwracaj uwagi na logikę. Nie jest.
HelloWorld.java
01 02 03 04 05 06 07 08 09 10 11 12 13 pakiet com.qwertovsky.helloworld; public class HelloWorld ( public static void main(String args) ( int a=2; int b=3; Calculator calc=new Calculator(); System.out.println("Hello World!"); System.out.println( a+"+"+b+"="+suma.kalc(a,b)); ) )
Kalkulator.java
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 pakiet com.qwertovsky.helloworld; import com.qwertovsky.helloworld.operation.Adder; Kalkulator klasy publicznej ( public int sum(int... a) ( Adder adder=new Adder(); for(int i:a) ( adder.add(i); ) return adder.getSum(); ) )
Adder.java
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 pakiet com.qwertovsky.helloworld.operation; public class Adder ( private int sum; public Adder() ( sum=0; ) public Adder(int a) ( this.sum=a; ) public void add(int b) ( sum+=b; ) public int getSum() ( suma zwrotu; ) )
Kompilacja
javac -d bin src/com/qwertovsky/helloworld/HelloWorld.java src\com\qwertovsky\helloworld\HelloWorld.java:9: nie można znaleźć symbolu symbolu: klasa Lokalizacja kalkulatora: klasa com.qwertovsky.helloworld.HelloWorld Kalkulator calc=new kalkulator(); ^ src\com\qwertovsky\helloworld\HelloWorld.java:9: nie można znaleźć symbolu symbolu: klasa Lokalizacja kalkulatora: klasa com.qwertovsky.helloworld.HelloWorld Kalkulator calc=nowy Kalkulator(); ^ 2 błędy Błąd wystąpił ze względu na fakt, że do kompilacji potrzebne są pliki z kodami źródłowymi używanych klas (klasa Calculator). Musisz określić katalog z plikami do kompilatora za pomocą klucza -sourcepath.
Kompilacja
javac -sourcepath ./src -d bin src/com/qwertovsky/helloworld/HelloWorld.java Uruchom
java -classpath ./bin com.qwertovsky.helloworld.HelloWorld Witaj Word 2+3=5

Jeśli jesteś zaskoczony wynikiem

Możliwe jest uruchomienie debuggera. Po to jest jdb.
Najpierw kompilujemy z przełącznikiem -g, aby debuger miał informacje.
javac -g -sourcepath ./src -d bin src/com/qwertovsky/helloworld/HelloWorld.java Uruchom debugger
jdb -classpath bin -sourcepath src com.qwertovsky.helloworld.HelloWorld Inicjowanie jdb ... > Debuger uruchamia swój wewnętrzny terminal, aby wprowadzać polecenia. Pomoc na ten ostatni można wyświetlić za pomocą polecenia pomocy.
Ustaw punkt przerwania w wierszu 9 w klasie Kalkulator
> zatrzymaj się na com.qwertovsky.helloworld.Calculator:9 Odraczanie punktu przerwania com.qwertovsky.helloworld.Calculator:9. Zostanie ustawiony po załadowaniu klasy. Ruszamy do realizacji.
> run run com.qwertovsky.helloworld.HelloWorld Ustaw nieprzechwycony java.lang.Throwable Ustaw odroczony nieprzechwycony java.lang.Throwable > VM Rozpoczęto: Ustaw odroczony punkt przerwania com.qwertovsky.helloworld.Calculator:9 Witaj świecie! Trafienie w punkt przerwania: "thread=main", com.qwertovsky.helloworld.Calculator.sum(), line=9 bci=0 9 Adder adder=new Adder(); Aby się zorientować, możesz wyświetlić fragment kodu źródłowego, w którym aktualnie znajduje się kursor.
lista główna 5 klasa publiczna Kalkulator 6 ( 7 public int suma(int... a) 8 ( 9 => Adder adder=nowy Adder(); 10 for(int i:a) 11 ( 12 adder.add(i); 13) 14 return adder.getSum() Dowiedz się, jaka jest zmienna a.
main print a a = wystąpienie int (id=340) main dump a a = ( 2, 3 ) główny przystanek w com.qwertovsky.helloworld.operation.Adder:19 Odroczenie punktu przerwania com.qwertovsky.helloworld.operation.Adder:19. Zostanie ustawiony po załadowaniu klasy. Kontynuujmy egzekucję.
main cont > Ustaw odroczony punkt przerwania com.qwertovsky.helloworld.operation.Adder:19 Trafienie punktu przerwania: "thread=main", com.qwertovsky.helloworld.operation.Adder.add(), line=19 bci=0 19 sum+=b ; lista główna 15 ) 16 17 public void add(int b) 18 ( 19 => sum+=b; 20 ) 21 22 public int getSum() 23 ( 24 return sum; main print sum sum = 0 main print b b = 2 w bieżąca linia i zobacz, że suma stała się równa 2.
main step > Krok zakończony: "thread=main", com.qwertovsky.helloworld.operation.Adder.add(), line=20 bci=10 20 ) main print sum sum = 2 Przejdźmy z klasy Adder do klasy Calculator tak to nazwało.
main step up > Krok zakończony: "thread=main", com.qwertovsky.helloworld.Calculator.sum(), line=10 bci=36 10 for(int i:a) Usuń punkt przerwania
main clear com.qwertovsky.helloworld.operation.Adder:19 Usunięto: punkt przerwania com.qwertovsky.helloworld.operation.Adder:19 główny krok > Krok ukończony: "thread=main", com.qwertovsky.helloworld.Calculator.sum() , line=12 bci=30 12 adder.add(i); Możesz uniknąć wchodzenia w metody, używając następnego polecenia.
main next > Krok zakończony: "thread=main", com.qwertovsky.helloworld.Calculator.sum(), line=10 bci=36 10 for(int i:a) main next > Krok zakończony: "thread=main", com.qwertovsky.helloworld.Calculator.sum(), line=14 bci=42 14 return adder.getSum(); Sprawdzamy wartość wyrażenia i kończymy wykonanie.
main eval adder.getSum() adder.getSum() = 5 main cont > 2+3=5 Aplikacja została zamknięta

Byłoby miło przetestować

Używamy JUnit.
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 pakiet com.qwertovsky.helloworld; importuj statyczne org.junit.Assert.*; import java.util.Arrays; importuj java.util.Collection; importuj org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Sparameterized.Parameters; @RunWith(value=org.junit.runners.Parameterized.class) public class TestCalculator ( oczekiwano int; int arg; @Parameters public static Collection parametry() ( return Arrays.asList(new int( ((4), (2, 2)) ,((-1),(4, -5)) ,((0),(0,0,0) ) ,((0),()) )); ) public TestCalculator(int oczekiwano, int arg) ( this.expected=expected; this.arg=arg; ) @Test public void testSum() ( Kalkulator c=nowy Kalkulator (); attachEquals(oczekiwany,c.sum(arg)); ) )
Kompilacja
mkdir test_bin javac -classpath lib/path/junit-4.8.2.jar -sourcepath ./src -d test_bin test/com/qwertovsky/helloworld/TestCalculator.java Uruchom. Separatorem ścieżki klas w systemie Windows jest „;”, w systemie Linux – ":". Oba ograniczniki nie działają w konsoli Cygwin. Może ";" powinno działać, ale jest traktowane jako separator poleceń.
java -classpath lib/path/junit-4.8.2.jar:./test_bin org.junit.runner.JUnitCore com.qwertovsky.helloworld.TestCalculator JUnit wersja 4.8.2 .... Czas: 0.031 OK (4 testy)

Stwórzmy bibliotekę

Klasa Calculator okazała się przydatna i może być używana w wielu projektach. Przenieśmy wszystko związane z klasą Calculator do osobnego projektu.
HelloWorld "---bin "---src "---com "---qwertovsky "---helloworld "---HelloWorld.java Kalkulator "---bin "---src ""---com " "---qwertovsky " "---calculator " "---Calculator.java " "---operacja " "---Adder.java "---test "---com "---qwertovsky " ---calculator "---TestCalculator.java Zmień także nazwy pakietów w źródłach. W HelloWorld.java musisz dodać linię
import com.qwertovsky.calculator.Kalkulator; Kompilacja.
cd Calculator javac -sourcepath src -d bin src/com/qwertovsky/calculator/Calculator.java Tworzenie archiwum jar
jar cvf kalkulator.jar -C bin . dodano manifest dodawanie: com/(in = 0) (out= 0)(przechowywany 0%) dodawanie: com/qwertovsky/(in = 0) (out= 0)(przechowywany 0%) dodawanie: com/qwertovsky/calculator/ (in = 0) (out= 0)(przechowywane 0%) dodanie: com/qwertovsky/calculator/Calculator.class(in = 497) (out= 373)(deflowane 24%) dodanie: com/qwertovsky/calculator/operacja /(in = 0) (out= 0)(przechowywane 0%) dodanie: com/qwertovsky/calculator/operation/Adder.class(in = 441) (out= 299)(deflowane 32%) uruchom program w koszu informator.

Musimy dowiedzieć się, co biblioteka ma w środku

Możesz rozpakować archiwum za pomocą zip-unpackera i zobaczyć, jakie klasy znajdują się w bibliotece.
Informacje o dowolnej klasie można uzyskać za pomocą deasemblera javap.
javap -c -classpath Calculator.jar com.qwertovsky.calculator.Calculator Skompilowany z klasy publicznej „Calculator.java” com.qwertovsky.calculator.Calculator rozszerza java.lang.Object( public com.qwertovsky.calculator.Calculator(); : 0: aload_0 1: invokespecial #1; //Metoda java/język/Object." ":()V 4: return public int sum(int); Kod: 0: new #2; //class com/qwertovsky/calculator/operation/Adder 3: dup 4: invokespecial #3; //Metoda com/qwertovsky /kalkulator/operacja/Składnik." ":()V 7: astore_2 8: astore_1 9: astore_3 10: aload_3 11: arraylength 12: istore 4 14: iconst_0 15: istore 5 17: iload 5 19: iload 4 21: if_icmpge 42 24: aload_3 25: istore 5 27: iaload 28: istore 6 30: aload_2 31: iload 6 33: invokevirtual #4; //Metoda com/qwertovsky/calculator/operacja/Adder.add:(I)V 36: iinc 5, 1 39: goto 17 42 : aload_2 43: invokevirtual #5; //Metoda com/qwertovsky/calculator/operation/Adder.getSum:()I 46: zwracam wywoływana jest metoda add klasy Adder.Po zakończeniu metody sum, Adder.getSum() jest nazywany.
Bez przełącznika -c program poda tylko listę zmiennych i metod (jeśli użyjesz -private, to wszystkie).
javap -private -classpath kalkulator.jar com.qwertovsky.calculator.operation.Adder Skompilowany z klasy publicznej "Adder.java" com.qwertovsky.calculator.operation.Adder rozszerza java.lang.Object( private int sum; public com.qwertovsky .calculator.operation.Adder(); public com.qwertovsky.calculator.operation.Adder(int); public void add(int); public int getSum(); )

Lepiej udokumentować bibliotekę

Zmieńmy w tym celu klasę kalkulatora.
Dokumentację można wygenerować za pomocą następującego polecenia. W przypadku wystąpienia błędu program wyświetli listę możliwych opcji.
mkdir doc javadoc -d doc -charset utf-8 -sourcepath src -author -subpackages com.qwertovsky.calculator

archiwum jar można podpisać

Jeśli potrzebujesz podpisać swoją bibliotekę podpisem cyfrowym, z pomocą przyjdą keytool i jarsigner.
Generujemy podpis.
keytool -genkey -keyalg rsa -keysize 2048 -alias qwertokey -keystore ścieżka/do/qwerto.keystore Wprowadź hasło do magazynu kluczy: Wprowadź ponownie nowe hasło: Jakie jest twoje imię i nazwisko? : Valery Qwertovsky Jak nazywa się Twoja jednostka organizacyjna? : Qwertovsky Jaka jest nazwa Twojej organizacji? : Qwertovsky Jak nazywa się Twoje miasto lub miejscowość? : Tver Jak nazywa się Twój stan lub prowincja? : Tverskaya obl. Jaki jest dwuliterowy kod kraju dla tej jednostki? : RU Czy CN=Valery Qwertovsky, OU=Qwertovsky, O=Qwertovsky, L=Twer, ST=Twerskaja obl., C=RU są poprawne? : y Wprowadź hasło klucza dla (POWRÓT, jeśli takie samo jak hasło do magazynu kluczy): Wprowadź ponownie nowe hasło:
Generowanie żądania podpisania certyfikatu (CSR)
keytool -certreq -file ścieżka/do/qwertokey.crt -alias qwertokey -keystore ścieżka/do/qwerto.keystore Wyślij zawartość otrzymanego pliku do urzędu certyfikacji. Otrzymujemy certyfikat od urzędu certyfikacji. Zapisujemy go w pliku (np. qwertokey.cer) i importujemy do repozytorium
keytool -import -trustcacerts -keystore path/to/qwert.keystore -alias qwertokey -file path/to/qwertokey.cer Podpisz archiwum jar
jarsigner -ścieżka/do/qwerto.keystore kalkulator.jar qwertokey Plik qwertokey.cer wysyłamy każdemu, kto chce sprawdzić archiwum. To jest sprawdzane w ten sposób
jarsigner -verify -verbose -certs -ścieżka/do/qwerto.keystore.keystore.jar

Korzystanie z biblioteki

Istnieje program HelloWorld, który używa klasy bibliotecznej Calculator. Aby skompilować i uruchomić program, musisz dołączyć bibliotekę.
Kompilacja
cd HelloWorld javac -sourcepath src -d bin -classpath ścieżka/do/calculator.jar src/com/qwertovsky/helloworld/HelloWorld.java Uruchom
java -classpath bin:path/to/calculator.jar com.qwertovsky.helloworld.HelloWorld

Składanie programu

Można to zrobić na różne sposoby.

Pierwszy sposób

cd HelloWorld echo main-class: com.qwertovsky.helloworld.HelloWorld>manifest.mf echo class-path: lib/calculator.jar >>manifest.mf mkdir lib cp ścieżka/do/calculator.jar lib/calculator.jar jar - cmf manifest.mf helloworld.jar -C bin . Są tu subtelności.
W kolejce
main-class: com.qwertovsky.helloworld.HelloWorld nie powinno zawierać spacji na końcu.
Druga subtelność jest opisana w: w tej samej linii powinno być przejście do następnej linii. Dzieje się tak, jeśli manifest jest archiwizowany przez zewnętrzny archiwizator.
Program jar nie będzie zawierał ostatniej linii z manifestu w manifeście, chyba że na końcu jest przerwa.
Kolejna kwestia: w manifeście nie powinno być pustych linii między wierszami. Zostanie zgłoszony błąd „java.io.IOException: nieprawidłowy format manifestu”.

Używając polecenia echo, wystarczy obserwować spację na końcu wiersza klasy głównej.

Drugi sposób

cd HelloWorld echo class-path: lib/calculator.jar >manifest.mf mkdir lib cp ścieżka/do/calculator.jar lib/calculator.jar jar -cmef manifest.mf com.qwertovsky.helloworld.HelloWorld helloworld.jar -C bin . W ten sposób unikniemy błędu ze spacją w klasie main.

Trzeci sposób

cd HelloWorld mkdir lib cd lib jar -xvf ścieżka/do/calculator.jar com/ utworzony: com/ utworzony: com/qwertovsky/ utworzony: com/qwertovsky/calculator/ napompowany: com/qwertovsky/calculator/Calculator.class utworzony: com /qwertovsky/calculator/operacja/ zawyżone: com/qwertovsky/calculator/operacja/Adder.class cd .. cp -r bin/* lib/ jar -cef com.qwertovsky.helloworld.HelloWorld helloworld.jar -C lib . rm -r lib Dołącz wymagany kod biblioteki do pliku wykonywalnego.

Uruchamianie wykonywalnego pliku jar

Plik Calculator.jar nie jest wykonywalny. Ale helloworld.jar można uruchomić.
Jeśli archiwum zostało utworzone na dwa pierwsze sposoby, to obok niego w tym samym katalogu powinien znajdować się folder lib z plikiem kalkulator.jar. Takie ograniczenia wynikają z faktu, że ścieżka względem pliku wykonywalnego jest określona w ścieżce klasy w manifeście.
cd Calculator ls ../HelloWorld/lib Calculator.jar java -jar ../HelloWorld/helloworld.jar Trzecia metoda obejmuje wymagane biblioteki w pliku wykonywalnym. Nie musisz trzymać w pobliżu niezbędnych bibliotek. Działa w ten sam sposób.
java -jar ../HelloWorld/helloworld.jar

Jak radzić sobie z aplikacjami JavaEE

Podobnie. Z używanego serwera aplikacji należy pobrać tylko biblioteki do kompilacji. Jeśli używam JBossa, to aby skompilować serwlet, musiałbym zrobić coś takiego
javac -classpath ścieżka/do/jboss/common/lib/jboss-servlet*.jar -d ./classes src/com/qwertovsky/app/servlets/MenuSt.java
Struktura archiwum aplikacji JavaEE musi mieć określony format. Na przykład
moje.ucho `---META-INF | `---manifest.mf `---lib | `---mylib.jar `---my.war | `---META-INF | | `---manifest.mf | `---WEB-INF | | `---lib | | | `---myweblib.jar | | `---klasy | | | `---com | | | `---... | | `---web.xml | `---indeks.html | `---<остальное веб-содержимое (страницы, изображения)>`---myejb.jar
Sposób uruchamiania aplikacji na samym serwerze za pomocą wiersza poleceń jest inny dla każdego serwera.

Mam nadzieję, że ten artykuł stanie się dla kogoś ściągawką do pracy z Javą w wiersz poleceń. Te umiejętności pomogą Ci zrozumieć treść i znaczenie skryptów Ant i odpowiedzieć na bardziej skomplikowane pytania podczas rozmowy kwalifikacyjnej niż „Które IDE lubisz najbardziej?”.

Teraz pokażę, jak można uruchomić prosty program java bez żadnego środowiska, takiego jak serwer aplikacji. Wystarczy jedna klasa, w której zostanie zdefiniowana metoda główna.

pakiet com.blogspot;
public class DeveloperRemarks(
public static void main(String args) (
if (args.length == 0) (
Wyjście systemu
.println("Podaj jako parametr wiersza poleceń tekst, który chcesz zobaczyć.");
) w przeciwnym razie (
System.out.println("Wpisałeś: " + args);
}
System.out.println("Źródło dostępne pod adresem developer-remarks.blogspot.com");
}
}
W wierszu poleceń podczas uruchamiania programu należy podać tekst, który będzie wyświetlany na ekranie. W przeciwnym razie zostanie wyświetlony odpowiedni komunikat. Wszystkie parametry przekazywane do programu będą zawarte w tablicy args ciągów, którą akceptuje metoda główna. Jeśli nie zostaną przekazane żadne parametry, długość tablicy będzie wynosić zero.

Teraz skonfigurujmy Eclipse, aby móc uruchomić plik jar z terminala. Aby to zrobić, musisz najpierw utworzyć konfigurację uruchamiania. Wybierz Uruchom - Uruchom konfiguracje z górnego menu. Otworzy się następujące okno:

Z listy po lewej stronie wybierz typ aplikacji: Aplikacja Java. Tam utwórz nową konfigurację, jak pokazano na zrzucie ekranu. Aby to zrobić, wybierz projekt docelowy i klasę, która ma metodę główną.

Jesteśmy teraz gotowi do wyeksportowania naszego projektu do wykonywalnego pliku jar. Aby to zrobić, kliknij projekt prawym przyciskiem myszy, wybierz „Eksportuj ...”, otworzy się następujące okno:


Wybierz Runnable Jar file z widoku drzewa. Wyszukiwanie można znacznie uprościć, filtrując typ projektu według nazwy. Kliknij Zakończ. Następnie otworzy się okno ustawień eksportu:


W nim wybierz wcześniej utworzoną konfigurację uruchamiania. Następnie podaj pełną nazwę pliku jar. W sekcji „Obsługa biblioteki” wybierz „Wyodrębnij wymagane biblioteki do wygenerowanego JAR” (rozpakuj wymagane biblioteki do wygenerowanego archiwum). Kliknij Zakończ, a zostanie utworzone archiwum wykonywalne.

Ponieważ w tym przykładzie nie ma zależności od innych bibliotek, wybieramy pierwszą pozycję. Ale gdybyśmy mieli kilkadziesiąt, a nawet setki zależności, lepiej byłoby wybrać trzecią pozycję „Kopiuj wymagane biblioteki do podfolderu obok wygenerowanego JARa” (skopiuj wymagane biblioteki do podkatalogu, część nazwy z czego pasuje do tworzonego archiwum ), aby uniknąć „nadużywania” pliku wykonywalnego. Gdybyśmy wybrali trzeci element, potrzebne biblioteki zostałyby skopiowane do osobnego folderu.

Teraz otwórz terminal i przejdź do katalogu, w którym utworzono plik wykonywalny jar. Wpisz następujące polecenie:

java -jar developer-remarks.jar Witaj świecie!

W ten sposób każesz interpreterowi java uruchomić nasze archiwum. Zwróć uwagę, że spacja i wykrzyknik w wierszu poleceń muszą być poprzedzone ukośnikiem odwrotnym.

Zademonstrowane podejście może być przydatne do celów edukacyjnych i testowych. Na przykład, aby utworzyć klienta, który wywoła EJB i wydrukuje wynik swojej pracy na konsoli. Zaletą tego podejścia jest uruchomienie archiwum jar bez żadnego środowiska. Wystarczy mieć JDK/JRE. Dostępne są źródła.

Zadanie: Uruchom aplikację Java z wiersza poleceń.

Na przykład zrobiłem mały program, który powinien obliczyć pole koła dla danego promienia. Program zawiera dwie klasy: GeometriaWF (główna) i Koło. Ma stworzyć aplikację konsolową. Uruchamianie aplikacji Java musi być wykonane z wiersza poleceń.

geometria pakietuwf;
klasa publiczna GeometriaWF(
public static void main(String args) (
próbować(
if (arg. równa się("kółko")) (
Circle c = new Circle(Double.parseDouble(args));
System.out.println("Obwód okręgu: "+c.perimeter());
System.out.println("Aria okręgu: "+c.area());
}
}
catch(ArrayIndexOutOfBoundsException e) (
System.out.println("Nieprawidłowe parametry wejściowe!");
}
}
}

geometria pakietuwf;
Klasa publiczna Koło(
publiczne podwójne r = 0;
krąg publiczny (podwójny r) (
to.r = r;
}
publiczny podwójny obszar() (
return(Mat.PI*r*r);
}
publiczny podwójny obwód() (
return(2*Mat.PI*r);
}
}

Następnym krokiem jest zbudowanie projektu. Do programowania używam NetBeans IDE. W związku z tym montaż odbywa się poprzez naciśnięcie kombinacji „Shift + F11” („Wyczyść i zbuduj projekt”). W rezultacie otrzymuję gotowy plik jar
(C:\Users\Jan\Documents\NetBeansProjects\GeometryWF\dist\GeometryWF.jar).

Uruchom z wiersza poleceń.

Przed uruchomieniem wiersza poleceń kliknij prawym przyciskiem myszy ikonę „Mój komputer” i otwórz „Właściwości”. Przejdź do "Zaawansowane ustawienia systemu"->"Zmienne środowiskowe". W sekcji "Zmienne systemowe" musisz utworzyć nową zmienną "JAVA_HOME" o wartości "" (mam ją "C:\glassfish3\jdk\bin"). Ta sama ścieżka musi być zapisana w istniejącej zmiennej Path po średniku. Zapisujemy wszystko i uruchamiamy wiersz poleceń.

Zmieniamy katalog na folder z plikiem jar za pomocą polecenia CHDIR:

C:\Użytkownicy\Jan> CHDIR C:\Użytkownicy\John\Dokumenty\NetBeansProjects\GeometryWF\dist\

Aplikację java uruchamiamy z wiersza poleceń za pomocą polecenia „java -jar .

C:\Users\John\Documents\NetBeansProjects\GeometryWF\dist> java -jar GeometriaWF.jar koło 9

Na wyjściu otrzymujemy:

Obwód koła: 56.548667764616276
Kwadrat koła: 254.46900494077323



Wesprzyj projekt - udostępnij link, dzięki!
Przeczytaj także
zasady gry walki kogutów zasady gry walki kogutów Mod dla Minecraft 1.7 10 receptur zegarków.  Przepisy na tworzenie przedmiotów w Minecrafcie.  Broń w Minecraft Mod dla Minecraft 1.7 10 receptur zegarków. Przepisy na tworzenie przedmiotów w Minecrafcie. Broń w Minecraft Szyling i funt szterling - pochodzenie słów Szyling i funt szterling - pochodzenie słów