Jar-faili käivitamine opsüsteemis Windows 10. Javaga töötamine käsureal

Lastele mõeldud palavikuvastaseid ravimeid määrab lastearst. Aga palaviku puhul on hädaolukordi, kui lapsele tuleb kohe rohtu anda. Siis võtavad vanemad vastutuse ja kasutavad palavikualandajaid. Mida on lubatud imikutele anda? Kuidas saate vanematel lastel temperatuuri alandada? Millised ravimid on kõige ohutumad?

Paljud algajad programmeerijad seisavad silmitsi järgmise küsimusega: "Lõin oma rakenduse IDE-s, kuidas ma saan selle nüüd käsurealt väljaspool IDE-d tööle panna?". Teine küsimus, mis võib tekkida, on: "Kuidas ma saan seda rakendust teistele kasutajatele levitada, ilma et neile kogu IDE-d korraga anda?".

Vastused neile küsimustele on suhteliselt lihtsad, kuid mitte alati ilmsed. AT see dokument vastab neile, demonstreerides IDE kasutamise põhitõdesid rakenduste levitamiseks ja juurutamiseks ettevalmistamiseks. Lisaks sisaldab see dokument teavet, mida võib vaja minna programmeerija süsteemi seadistamiseks (või mida tuleb rakenduse kasutajatele edastada). Näitame mitut erinevat lähenemisviisi rakenduse juurutamiseks, võimaldades kasutajatel sellele juurdepääsu:

  • Topeltklõpsake rakenduse Java arhiivi (JAR) failil.
  • Rakenduse kutsumine käsurealt.
  • Rakenduse kutsumine skriptifailist.
  • Java Web Starti kasutamine.

See õpetus nõuab allolevas tabelis loetletud tarkvara ja materjale.

Käivitatava JAR-faili loomine

See õpetuse osa näitab, kuidas saate luua IDE-s edasilevitatava rakenduse ja seejärel käivitada rakenduse väljaspool IDE-d. Pakendame selle rakenduse käivitatavasse JAR-faili.

JAR-fail on arhiivifail, mis võib sisaldada faile ja kaustu. JAR-failid sarnanevad ZIP-failidega, kuid JAR-failidel võivad olla täiendavad atribuudid, mis on kasulikud Java-rakenduste levitamisel. Need atribuudid hõlmavad JAR-failide digitaalset allkirja, valikulist tihendamist, platvormidevahelist ühilduvust ja nii edasi.

Selles harjutuses loome IDE projekti ja seejärel asetame projekti kaks eelnevalt kirjutatud Java lähtefaili. Seejärel kompileerime klassid ja loome käivitatava JAR-faili. Pärast seda näeme, kuidas käivitada JAR-faile väljaspool IDE-d.

Selles õpetuses kasutatud klassid rakendavad GNU grep utiliidi funktsioone, mida saab kasutada teksti- või regulaaravaldise mustrite otsimiseks tekstifailides. See projekt sisaldab nii rakenduse käsurea versiooni kui ka versiooni, mis kasutab GUI, mis annab ülevaate erinevatest viisidest rakenduse käitamiseks.

Projekti loomine olemasolevate lähtekoodifailide abil

  1. Rakenduse levitamine teistele kasutajatele

    Nüüd, kui olete kinnitanud, et teie rakendus töötab väljaspool IDE-d, võite jätkata selle levitamist.

    Märge. Kui teie rakendus sõltub muudest teekidest peale JDK-s sisalduvate, peate need oma distributsiooni kaasama (ei kehti selle näite puhul). Nende teekide suhtelised teed lisatakse JAR-i manifesti faili klassitee kirjesse, kui rakendust arendatakse IDE-s. Kui neid täiendavaid teeke ei leidu käivitamisel määratud klassiteel (st suhtelisel teel), siis rakendus ei käivitu.
    Loo ZIP-arhiiv mis sisaldab JAR-faili ja teeki, ning seejärel laadige see üles ZIP-fail kasutajad. Andke kasutajatele see ZIP-arhiiv lahti pakkida, et JAR-fail ja teegi JAR-failid oleksid samas kaustas. Käivitage rakenduse jar-fail.

    Java rakenduse käivitamine

    Selle harjutuse eesmärk on näidata mõningaid viise, kuidas rakendust käsurealt käivitada.

    See harjutus näitab, kuidas saate Java-rakendust käivitada kahel järgmisel viisil.

    • Java käsu käivitamine käsurealt.
    • Skripti kasutamine klassi kutsumiseks JAR-failis.

    Rakenduste käivitamine käsurealt

    Rakenduse saab käivitada käsurealt kasutades java käsku. Kui soovite käivitada käivitatava JAR-faili, kasutage käsu suvandit -jar.

    Näiteks rakenduse AnotherGrep käivitamiseks tehke järgmist.

    1. Avage terminali aken. Microsoft Windowsi süsteemides saab seda teha, klõpsates nuppu "Start" ja valides "Run...", tippides väljale "Open:" cmd ja klõpsates nuppu "OK".
    2. Mine kataloogi PROJECT_HOME/dist (kasutades käsku cd).
    3. Peamise rakenduseklassi käivitamiseks sisestage järgmine rida: java -jar AnotherGrep.jar

    Kui järgite neid juhiseid ja rakendus ei käivitu, peaksite tõenäoliselt tegema ühte järgmistest.

    Rakenduste käivitamine skriptist

    Kui levitatav rakendus on konsoolirakendus, võib teil olla mugavam seda skriptist käivitada, eriti kui rakenduse käitamiseks on vaja pikki ja keerulisi argumente. Selles jaotises kasutame Grepi konsooliversiooni, milles peame edastama argumendid (otsingumustri ja failide loendi) meie skriptis kutsutavale JAR-failile. Käsureale tippimise vähendamiseks kasutame lihtsat skripti, mis sobib testrakenduse käitamiseks.

    Esimene samm on muuta rakenduse põhiklass klassi konsooliversiooniks ja ehitada uuesti JAR-fail:

    1. Paremklõpsake IDE projektiaknas projekti sõlme (AnotherGrep) ja valige Atribuudid.
    2. Valige sõlm Käivita ja muutke põhiklass atribuudiks othergrep.Grep (alates othergrep.xGrep). Projekti atribuutide akna sulgemiseks klõpsake nuppu OK.
    3. Paremklõpsake uuesti projekti sõlme ja valige Clean and Build Project.

    Kui need sammud on lõpule viidud, ehitatakse JAR-fail ümber ja JAR-faili manifesti Main-Class atribuut osutab aadressile anothergrep.Grep .

    bash skript – UNIX-i ja Linuxi töötavatele arvutitele

    Kaustast, kuhu faili sisu ekstraktiti, leiate bash-skripti nimega grep.sh . Vaatame seda:

    #!/bin/bash java -jar dist/AnotherGrep.jar [e-postiga kaitstud]

    Esimene rida määrab, millist käsu tõlgendajat selle skripti tõlgendamiseks kasutada. Teine käivitab kaustas IDE loodud JAR-faili PROJECT_HOME/dist . [e-postiga kaitstud] kopeerib lihtsalt kõik skriptile edastatud argumendid, lisades igaüks neist jutumärkidesse.

    See skript eeldab, et Java binaarfailid on osa keskkonnamuutujast PATH. Kui see skript teie arvutis ei tööta, vaadake .

    Bash-tõlgi skriptimise kohta lisateabe saamiseks vt.

    .bat skript Windowsi arvutitele

    Microsoft Windowsi arvutites saab pakkfailidesse korraga edastada maksimaalselt üheksa argumenti. Kui argumente on rohkem kui üheksa, tuleb JAR-faili mitu korda käivitada.

    Selle skript võib välja näha järgmine:

    @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 % % muster % % failid % jaoks % %i in (0 1 2 3 4 5 6 7 8) nihuta goto:loop:allprocessed

    Selle skripti leiate grep.bat nime all kaustast, kuhu arhiivi sisu ekstraktiti, kui soovite seda näha.

    Üheksa argumenti esitatakse partiifailis % , kus peab olema väärtus sees<0-9>. %0 on reserveeritud skripti nime jaoks.

    Näete, et programmile edastatakse korraga (ühes tsüklis) ainult üheksa argumenti. For-lause nihutab lihtsalt argumente üheksa võrra, et valmistada need ette järgmiseks tsükliks. Tsükkel lõpeb, kui if-lause leiab tühja failiargumendi (see näitab, et uusi töödeldavaid faile pole).

    Lisateavet partii skriptimise kohta leiate aadressilt.

    Rakenduse pakkimine Java Web Start jaoks

    Java Web Start on tehnoloogia, mida kasutatakse Java-rakenduste käivitamiseks veebibrauserist ühe klõpsuga. Lisateavet Java Web Starti juurutamiseks mõeldud rakenduste pakendamise kohta leiate teemast Java Web Starti lubamine NetBeans IDE-s. Siin anname vaid lühikirjelduse sammudest, mis on vajalikud rakenduse Java Web Starti abil juurutatavaks muutmiseks.

    1. Paremklõpsake projektiaknas projekti sõlme ja valige Atribuudid.
    2. Märkige projekti atribuutide akna vahekaardil Web Start märkeruut Enable Web Start.
    3. Valige koodibaasi rippmenüüst Kohalik täitmine, kuna testime ainult kohalikku täitmist.
      Säilitage kõik muud vaikesätted ja klõpsake nuppu OK.
    4. Paremklõpsake projekti sõlme ja valige Clean and Build Project.
      See IDE-käsk eemaldab kõik varem kompileeritud failid ja järgud, kompileerib rakenduse uuesti ja koostab projekti uute sätetega.
    5. Avage kaust väljaspool IDE-d PROJECT_HOME/dist , seejärel avage brauseris fail launch.html.
      Ilmub test. HTML leht nupuga Käivita.
    6. Rakenduse avamiseks vajutage nuppu Käivita.
      Näete, et Java on laaditud ja rakendus töötab.

      Märge. Mõned brauserid suunavad kasutajad esmalt Java allalaadimiste lehele.

    JAR-failide seoste määramine

    Enamikus arvutites saab käivitatava JAR-faili käivitada lihtsalt sellel topeltklõpsuga. Kui JAR-failil topeltklõpsamisel midagi ei juhtu, võib selle põhjuseks olla üks kahest järgmisest põhjusest.

    • JAR-failitüüp ei ole selles arvutis seotud Java Runtime Environmentiga (JRE).

      Kui JAR-failitüüp on seotud JRE-ga, peab seda faili esindav ikoon sisaldama Java logo.

    • JAR-failitüüp vastendatakse JRE-ga, kuid suvand -jar ei kuulu ikoonil topeltklõpsamisel JRE-le edastatavasse käsusse.

    Märge. Mõnikord vahetab JAR-failide seoseid installitud tarkvara, näiteks tarkvara ZIP-failide töötlemiseks.

    See, kuidas JAR-failitüüpi saab siduda Java käivitajaga, sõltub operatsioonisüsteemist.

    Veenduge, et teie arvutisse oleks installitud üks JRE versioonidest. Kasutada tuleks versiooni 1.4.2 või uuemat. Java-rakendusi ei saa käivitada arvutites, kuhu pole installitud Java platvormi. (Kui on installitud Java arenduskomplekt (JDK), installitakse koos sellega ka JRE. Kui aga programmi levitatakse mitteprogrammeerijatele, ei pruugi kasutajatel olla JRE-d ega JDK-d.)

    • Windows XP installitud Java versioon saab kontrollida valides "Start" > "Juhtpaneel" > ("Programmide lisamine või eemaldamine") (seal peaks olema näiteks Java (TM) 6 värskendus 33).
    • peal Windows Vista või 7 Java installitud versiooni saab kontrollida valides "Start" > "Juhtpaneel" > ("Programmid ja funktsioonid") (seal tuleks täpsustada näiteks Java (TM) 6 värskendus 33).

    Kui teie arvutil pole Java platvormi, saate JRE alla laadida Java SE allalaadimissaidilt.

    Kui see on teie arvutis juba olemas, kuid failiseos ei tööta, järgige Microsoft Windowsis JAR-faili seose lisamiseks juhiseid.

    1. Valige "Start" > "Juhtpaneel".
    2. (Kehtib ainult Windows Vista puhul). Klõpsake "Juhtpaneel" > "Programmid".

    3. Windows Vista või 7 puhul klõpsake nuppu Default Programs (Vaikeprogrammid) ja valige Seosta failitüüp või protokoll programmiga.
    4. (Windows XP-s klõpsake dialoogiboksi jaotises Üksikasjad nuppu Muuda programmi.)
    5. Dialoogiboksis Programmi valimine valige Java Platform SE Binary.
    6. Dialoogiboksist "Vali programm" väljumiseks klõpsake nuppu "OK".
    7. Klõpsake nuppu Sule, et sulgeda dialoogiboks Folder Options (Kaustasuvandid) (Windows XP-s) või dialoogiboks failitüübi või protokolli seostamiseks konkreetsete programmidega (Windows 7-s).

    Märge. Kui JAR-failid on süsteemis seotud Java Platform SE Binaryga, kuid topeltklõps JAR-faili ikkagi ei käivita, peate võib-olla failiseoses määrama suvandi -jar.

    Microsoft Windows XP failiseos suvandi -jar määramiseks toimige järgmiselt.

    1. Valige "Start" > "Juhtpaneel".
    2. Windows XP-s topeltklõpsake "Folder Options" ja valige vahekaart "Failitüübid".
    3. Valige loendist Registreeritud failitüübid JAR-fail.
    4. Klõpsake dialoogiboksi jaotises Üksikasjad nuppu Täpsemalt.
    5. Dialoogiboksis Redigeeri failitüübi atribuute klõpsake nuppu Redigeeri....
    6. Lisage tekstikasti "Toimingu teostav rakendus" JRE tee lõppu järgmine rida: -jar "%1" %* Pärast seda peaks kast sisaldama teksti, mis sarnaneb järgmisega: "C:\Program Failid\Java\jre1.6.0_33\ bin\javaw.exe" -jar "%1" %*
    7. Dialoogiboksist Muuda tüübi toimingut väljumiseks klõpsake nuppu OK.
    8. Failitüübi atribuutide redigeerimise dialoogiboksist väljumiseks klõpsake nuppu OK.
    9. Dialoogiboksist Folder Options (Kaustasuvandid) väljumiseks klõpsake nuppu Sule.

    Märge. Alates Windows Vistast saab laiendatud failiseoseid konfigureerida RegEditi abil. Lisateavet leiate teemast Mis juhtus failitüüpide dialoogiga? .

    UNIX-i ja Linuxi süsteemide puhul sõltub failiseoste muutmise protseduur sellest, millist töölauakeskkonda (nt GNOME või KDE) kasutatakse. Vaadake oma tööruumi sätteid või lugege tööruumi dokumentatsiooni.

    Keskkonnamuutuja PATH määramine

    Kui teie arvuti ei saa Java-klassi või JAR-faili käitada ilma JDK või JRE asukohta määramata, peate võib-olla muutma süsteemi PATH keskkonnamuutuja väärtust.

    Kui töötate Microsoft Windowsi süsteemis, sõltub muutuja PATH seadistamise protseduur teie kasutatavast Windowsi versioonist.

    Järgmised sammud muutuja PATH määramiseks Windowsi süsteem XP:

    1. Valige "Start" > "Juhtpaneel" ja topeltklõpsake "Süsteem".
    2. Valige dialoogiboksis Süsteemi atribuudid vahekaart Täpsemalt.
    3. Klõpsake vahekaarti Keskkonnamuutujad.
    4. Valige kasutajakeskkonna muutujate loendist PATH ja klõpsake nuppu Redigeeri.
    5. Lisage JRE asukoht teede loendi lõppu. Loendis olevad asukohad on eraldatud semikooloniga (;).
      Näiteks kui JRE asub kaustas C:\Program Files\Java\jdk1.6.0_23, lisage PATH-muutuja lõppu: C:\Program Files\Java\jdk1.6.0_23\bin
    6. Dialoogiboksist Keskkonnamuutujad väljumiseks klõpsake nuppu OK, seejärel klõpsake dialoogiboksist Süsteemi atribuudid väljumiseks nuppu OK.

    Sisse töötades operatsioonisüsteem UNIX või Linux, keskkonnamuutuja PATH muutmise viis sõltub kasutatavast käsutõlgendusprogrammist. Lisateabe saamiseks vaadake käsutõlgi dokumentatsiooni.

    Mis järgmiseks?

    Lisateavet NetBeansi IDE-ga töötamise kohta leiate NetBeansi veebisaidilt.

    Lisateavet Java-rakenduste arendamise kohta IDE-s, sealhulgas klassitee haldamise kohta, leiate dokumendist

Nüüd ei loo keegi enam konsoolis programme. Teie lemmik-IDE-d kasutades tunneb arendaja end ebamugavalt kellegi teise arvutis, kus seda pole.
Otsustades Ant ja Maveni tööd mõista, avastasin, et ma ei suuda rakendust ilma nendeta konsoolis luua.
Selles artiklis püüdsin sobitada kõik demorakenduse kujundamise etapid, et mitte otsida Internetist iga käsu kohta abi.

Lihtsatest kuni...

Iga programm sisaldub tavaliselt eraldi kataloogis. Minu reegel on luua selles kataloogis vähemalt kaks kausta: src ja bin. Esimene sisaldab lähtekoode, teine ​​kompileerimise tulemust. Nendel kaustadel on sõltuvalt pakettidest kataloogistruktuur.

Üks fail

Saate seda teha ilma täiendavate kaustadeta.
Võtame faili.
01 02 03 04 05 06 07 08 09 public class HelloWorld ( public static void main(String args) ( System.out.println("Tere maailm!"); Kalkulaator calc=new kalkulaator(); System.out.println("2+2="+calc.sum (2,2)); ) )
Minge kataloogi, kus see fail asub, ja käivitage käsud.
javac HelloWorld.java Selles kaustas kuvatakse fail HelloWorld.class. Nii et programm on koostatud. Et seda alustada
java -classpath . Tere, Maailm

Binaaride eraldamine allikatest

Nüüd teeme sama, kuid kataloogidega. Loome HelloWorldi kataloogi, milles on kaks kausta src ja bin.
Koostamine
javac -d bin src/HelloWorld.java Siin oleme näidanud, et binaarfailid salvestatakse eraldi prügikasti ja neid ei tohi segi ajada allikatega.

Käivitame
java -classpath ./bin HelloWorld

Kasutame pakette

Ja siis äkki lakkab programm olemast lihtsalt HelloWorld. Pakettidele on kõige parem anda tähendusrikas ja ainulaadne nimi. See lisab see programm teisele projektile ilma nimetamiskonfliktita. Pärast mõne artikli lugemist võite arvata, et paketi nimi vajab tingimata domeeni. See ei ole tõsi. Domeenid on mugav viis unikaalsuse saavutamiseks. Kui teil pole oma domeeni, kasutage saidil olevat kontot (näiteks ru.habrahabr.mylogin). See saab olema ainulaadne. Pange tähele, et pakettide nimed peavad olema väiketähtedega. Ja vältige erimärkide kasutamist. Probleemid tekivad erinevate platvormide ja failisüsteemide tõttu.

Asetame oma klassi paketti nimega com.qwertovsky.helloworld. Selleks lisage faili algusesse rida
pakett com.qwertovsky.helloworld; Loome src kataloogi täiendavad kataloogid, et faili tee näeks välja järgmine: src/com/qwertovsky/helloworld/HelloWorld.java.
Koostamine
javac -d bin src/com/qwertovsky/helloworld/HelloWorld.java Bin-kataloogil on automaatselt src-ga sarnane kataloogistruktuur.
HelloWorld "---bin " "---com " "---qwertovsky " "---helloworld " "---HelloWorld.class "---src "---com "---qwertovsky "-- -helloworld "---HelloWorld.java Run
java -classpath ./bin com.qwertovsky.helloworld.HelloWorld

Kui programmis on mitu faili

Muudame programmi. Ärge pöörake loogikale tähelepanu. Ta ei ole.
HelloWorld.java
01 02 03 04 05 06 07 08 09 10 11 12 13 pakett com.qwertovsky.helloworld; public class HelloWorld ( public static void main(String args) ( int a=2; int b=3; kalkulaator calc=new kalkulaator(); System.out.println("Tere maailm!"); System.out.println( a+"+"+b+"="+arvutus.summa(a,b)); ) )
Kalkulaator.java
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 pakett com.qwertovsky.helloworld; import com.qwertovsky.helloworld.operation.Adder; avalik klass Kalkulaator ( public int sum(int... a) ( Liitja liitja=uus Lisaja(); for(int i:a) ( adder.add(i); ) return adder.getSum(); ) )
Lisaja.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 pakett com.qwertovsky.helloworld.operation; public class Liitja ( privaatne int summa; public liitja() ( sum=0; ) public liitja(int a) ( this.sum=a; ) public void add(int b) ( sum+=b; ) public int getSum() (tagastussumma; ) )
Koostamine
javac -d bin src/com/qwertovsky/helloworld/HelloWorld.java src\com\qwertovsky\helloworld\HelloWorld.java:9: sümbolit ei leia sümbol: klass Kalkulaatori asukoht: klass com.qwertovsky.helloworld.HelloWorld=uus kalkulaator kalkulaator(); ^ src\com\qwertovsky\helloworld\HelloWorld.java:9: ei leia sümbolit sümbol: klass Kalkulaatori asukoht: class com.qwertovsky.helloworld.HelloWorld kalkulaator calc=new Kalkulaator(); ^ 2 viga Viga tekkis seetõttu, et kompileerimiseks on vaja kasutatavate klasside lähtekoodidega faile (klass Kalkulaator). Peate määrama kompilaatorile failidega kataloogi, kasutades võtit -sourcepath.
Koostamine
javac -sourcepath ./src -d bin src/com/qwertovsky/helloworld/HelloWorld.java Run
java -classpath ./bin com.qwertovsky.helloworld.HelloWorld Tere sõna 2+3=5

Kui olete tulemusest üllatunud

Siluri on võimalik käivitada. Selleks on jdb.
Esiteks kompileerime lülitiga -g, et siluril oleks teavet.
javac -g -sourcepath ./src -d bin src/com/qwertovsky/helloworld/HelloWorld.java Käivitage silur
jdb -classpath bin -sourcepath src com.qwertovsky.helloworld.HelloWorld Jdb initsialiseerimine ... > Siluja käivitab käskude sisestamiseks sisemise terminali. Viimase abi saab kuvada abikäsu abil.
Määrake murdepunkt 9. reale klassis Kalkulaator
> peatus aadressil com.qwertovsky.helloworld.Kalkulaator:9 Katkestuspunkti edasilükkamine com.qwertovsky.helloworld.Kalkulaator:9. See määratakse pärast klassi laadimist. Käivitame täitmiseks.
> run run com.qwertovsky.helloworld.HelloWorld Määra püüdmata java.lang.Throwable Määra edasilükatud püüdmata java.lang.Throwable > VM Alustatud: määra edasilükatud katkestuspunkt com.qwertovsky.helloworld.Calculator:9 Tere maailm! Katkestuspunkti tabamus: "thread=main", com.qwertovsky.helloworld.Calculator.sum(), line=9 bci=0 9 Lisaja adder=new Lisaja(); Et saada oma suunda, saate kuvada osa lähtekoodist, kus kursor hetkel asub.
põhiloend 5 avalik klass Kalkulaator 6 ( 7 public int sum(int... a) 8 ( 9 => Adder adder=new Adder(); 10 for(int i:a) 11 ( 12 summaar.add(i); 13) 14 tagastab adder.getSum(); Uurige, mis on muutuja a.
põhitrükk a a = int (id=340) peamise prügila eksemplar a a = ( 2, 3 ) põhipeatus kohas com.qwertovsky.helloworld.operation.Adder:19 Katkestuspunkti edasilükkamine com.qwertovsky.helloworld.operation.Adder:19. See määratakse pärast klassi laadimist. Jätkame täitmist.
main cont > Määra edasilükatud katkestuspunkt com.qwertovsky.helloworld.operation.Adder:19 Katkestuspunkti tabamus: "thread=main", com.qwertovsky.helloworld.operation.Adder.add(), line=19 bci=0 19 sum+=b ; põhiloend 15 ) 16 17 public void add(int b) 18 ( 19 => summa+=b; 20 ) 21 22 public int getSum() 23 ( 24 return summa; põhitrüki summa summa = 0 põhitrükk b b = 2 jooksev rida ja vaadake, et summa on võrdne 2-ga.
põhisamm > Samm lõpetatud: "thread=main", com.qwertovsky.helloworld.operation.Adder.add(), line=20 bci=10 20 ) põhitrüki summa summa = 2 Tõuseme klassist Adder klassi Kalkulaator see kutsus seda.
peamine samm üles > Samm lõpetatud: "thread=main", com.qwertovsky.helloworld.Calculator.sum(), line=10 bci=36 10 for(int i:a) Eemalda katkestuspunkt
peamine selge com.qwertovsky.helloworld.operation.Adder:19 Eemaldatud: katkestuspunkt com.qwertovsky.helloworld.operation.Adder:19 põhietapp > Samm on lõpetatud: "thread=main", com.qwertovsky.helloworld.Calculator.sum() , rida=12 bci=30 12 liitja.add(i); Meetoditesse sisenemist saate vältida järgmise käsu abil.
main next > Samm lõpetatud: "thread=main", com.qwertovsky.helloworld.Calculator.sum(), line=10 bci=36 10 for(int i:a) main next > Samm lõpetatud: "thread=main", com.qwertovsky.helloworld.Calculator.sum(), rida=14 bci=42 14 return adder.getSum(); Kontrollime avaldise väärtust ja lõpetame täitmise.
main eval adder.getSum() adder.getSum() = 5 main cont > 2+3=5 Rakendus väljus

Tore oleks testida

Kasutame JUnitit.
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 pakett com.qwertovsky.helloworld; import static org.junit.Assert.*; import java.util.Arrays; import java.util.Collection; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized.Parameters; @RunWith(value=org.junit.runners.Parameterized.class) avaliku klassi testkalkulaator ( oodatav int; int arg; @Parameters avalik staatiline kogu parameetrid() ( return Arrays.asList(new int( ((4), (2, 2)) ,((-1),(4, -5)) ,((0),(0,0,0) ) ,((0),()) )); ) public TestCalculator(int oodatud, int arg) ( this.expected=expected; this.arg=arg; ) @Test public void testSum() ( Kalkulaator c=uus kalkulaator (); assertEquals(expected,c.sum(arg)); ) )
Koostamine
mkdir test_bin javac -classpath lib/path/junit-4.8.2.jar -sourcepath ./src -d test_bin test/com/qwertovsky/helloworld/TestCalculator.java Käivitage. Windowsi klassitee eraldaja on ";", Linuxis on see ":". Mõlemad eraldajad ei tööta Cygwini konsoolis. Võib-olla ";" peaks töötama, kuid seda käsitletakse käsu eraldajana.
java -classpath lib/path/junit-4.8.2.jar:./test_bin org.junit.runner.JUnitCore com.qwertovsky.helloworld.TestCalculator JUnit versioon 4.8.2 .... Aeg: 0,031 OK (4 testi)

Loome raamatukogu

Kalkulaatori klass on osutunud kasulikuks ja seda saab kasutada paljudes projektides. Kolime kõik Kalkulaatori klassiga seonduva eraldi projekti.
HelloWorld "---bin "---src "---com "---qwertovsky "---helloworld "---HelloWorld.java kalkulaator "---bin "---src ""---com " "---qwertovsky " "---kalkulaator " "---Calculator.java " "---operatsioon " "---Adder.java "---test "---com "---qwertovsky " ---kalkulaator "---TestCalculator.java Muutke ka pakettide nimesid allikates. HelloWorld.javasse tuleb lisada rida
import com.qwertovsky.calculator.Calculator; Koostamine.
cd kalkulaator javac -sourcepath src -d bin src/com/qwertovsky/calculator/Calculator.java Jar arhiivi koostamine
jar cvf kalkulaator.jar -C bin . lisatud manifesti lisamine: com/(sisse = 0) (välja= 0) (salvestatud 0%) lisamine: com/qwertovsky/(sisse = 0) (välja= 0) (salvestatud 0%) lisamine: com/qwertovsky/calculator/ (sisse = 0) (välja = 0) (salvestatud 0%) lisades: com/qwertovsky/calculator/Calculator.class(in = 497) (out= 373)(deflateeritud 24%) lisades: com/qwertovsky/calculator/operation /(sisse = 0) (välja = 0)(salvestatud 0%) lisades: com/qwertovsky/calculator/operation/Adder.class(in = 441) (out= 299)(tühjendatud 32%) käivitage programm prügikastis kataloog.

Peame uurima, mis raamatukogu sees on

Saate arhiivi lahti pakkida zip-lahtipakkijaga ja vaadata, millised klassid raamatukogus on.
Teavet mis tahes klassi kohta saab javap disassembleri abil.
javap -c -classpath calculator.jar com.qwertovsky.calculator.Calculator Kompileeritud "Calculator.java" avalikust klassist com.qwertovsky.calculator.Calculator laiendab java.lang.Object( public com.qwertovsky.calculator.Calculator(); Code : 0: aload_0 1: invokespecial #1; //Meetod java/lang/Object." ":()V 4: tagasta avalik int sum(int); Kood: 0: uus #2; //class com/qwertovsky/calculator/operation/Adder 3: dup 4: invokespecial #3; //Meetod com/qwertovsky /calculator/operation/Adder." ":()V 7: astore_2 8: aload_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 27: iaload 28: istore 6 30: aload_2 31: iload 6 33: invokevirtual #4; //Meetod com/qwertovsky/calculator/operation/Adder.add:(I)V 36: iinc 5, 1 39: goto 17 : aload_2 43: invokevirtual #5; //Meetod com/qwertovsky/calculator/operation/Adder.getSum:()I 46: ireturn kutsutakse välja Adder-klassi liitmismeetod.Pärast summameetodi lõppu, Adder.getSum() kutsutakse.
Ilma lülitita -c annab programm ainult muutujate ja meetodite loendi (kui kasutate -private, siis kõik).
javap -private -classpath calculator.jar com.qwertovsky.calculator.operation.Adder Kompileeritud "Adder.java" avalikust klassist com.qwertovsky.calculator.operation.Adder laiendab 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(); )

Parem on raamatukogu dokumenteerida

Muudame selle jaoks kalkulaatori klassi.
Dokumentatsiooni saab genereerida järgmise käsuga. Kui ilmneb tõrge, kuvab programm võimalike valikute loendi.
mkdir doc javadoc -d doc -charset utf-8 -sourcepath src -author -alampaketid com.qwertovsky.calculator

jar arhiivi saab allkirjastada

Kui peate oma raamatukogu allkirjastama digiallkirjaga, tulevad appi Keytool ja jarsigner.
Loome allkirja.
keytool -genkey -keyalg rsa -keysize 2048 -alias qwertokey -keystore path/to/qwerto.keystore Sisestage võtmesalve parool: Sisestage uus parool uuesti: Mis on teie ees- ja perekonnanimi? : Valeri Qwertovsky Mis on teie organisatsiooniüksuse nimi? : Qwertovsky Mis on teie organisatsiooni nimi? : Qwertovsky Mis on teie linna või paikkonna nimi? : Tver Mis on teie osariigi või provintsi nimi? : Tverskaya obl. Mis on selle üksuse kahetäheline riigikood? : RU Kas CN=Valeri Qwertovski, OU=Qwertovski, O=Qwertovski, L=Tver, ST=Tverskaja obl., C=RU on õiged? : y Sisestage võtme parool (TAGASI, kui sama mis võtmehoidja parool): Sisestage uus parool uuesti:
Sertifikaadi allkirjastamise taotluse (CSR) genereerimine
keytool -certreq -faili tee/to/qwertokey.crt -alias qwertokey -võtmesalve tee/qwerto.keystore Saatke vastuvõetud faili sisu sertifitseerimisasutusele. Saame sertifitseerimisasutuselt sertifikaadi. Salvestame selle faili (näiteks qwertokey.cer) ja impordime hoidlasse
keytool -import -trustcacerts -keystore path/to/qwert.keystore -alias qwertokey -faili tee/to/qwertokey.cer Allkirjastage jar arhiiv
jarsigner -keystore path/to/qwerto.keystore calculator.jar qwertokey Saadame faili qwertokey.cer kõigile, kes soovivad arhiivi kontrollida. Seda kontrollitakse nii
jarsigner -verify -verbose -certs -keystore path/to/qwerto.keystore calculator.jar

Raamatukogu kasutamine

On olemas programm HelloWorld, mis kasutab Calculator raamatukogu klassi. Programmi koostamiseks ja käitamiseks peate kaasama raamatukogu.
Koostamine
cd HelloWorld javac -sourcepath src -d bin -classpath path/to/calculator.jar src/com/qwertovsky/helloworld/HelloWorld.java Run
java -classpath bin:path/to/calculator.jar com.qwertovsky.helloworld.HelloWorld

Programmi kokku panemine

Seda saab teha erineval viisil.

Esimene viis

cd HelloWorld echo põhiklass: com.qwertovsky.helloworld.HelloWorld>manifest.mf echo klassi tee: lib/calculator.jar >>manifest.mf mkdir lib cp path/to/calculator.jar lib/calculator.jar jar - cmf manifest.mf helloworld.jar -C bin . Siin on peensusi.
Järjekorras
põhiklass: com.qwertovsky.helloworld. HelloWorld ei tohiks olla lõpus tühikuid.
Teist peenust kirjeldatakse järgmiselt: samal real peaks olema ülekanne järgmisele reale. Seda juhul, kui manifesti arhiveerib kolmandast osapoolest arhiveerija.
Jar programm ei sisalda manifesti viimast rida manifestist, välja arvatud juhul, kui lõpus on reavahetus.
Teine punkt: manifestis ei tohiks ridade vahel olla tühje ridu. Ilmub tõrge "java.io.IOException: kehtetu manifesti vorming".

Kajakäsku kasutades tuleb jälgida ainult põhiklassi rea lõpus olevat tühikut.

Teine viis

cd HelloWorld kaja klassitee: lib/calculator.jar >manifest.mf mkdir lib cp path/to/calculator.jar lib/calculator.jar jar -cmef manifest.mf com.qwertovsky.helloworld.HelloWorld helloworld.jar -C bin . Nii väldime viga põhiklassi tühikuga.

Kolmas viis

cd HelloWorld mkdir lib cd lib jar -xvf tee/to/kalkulaator.jar com/ loodud: com/ loodud: com/qwertovsky/ loodud: com/qwertovsky/calculator/ inflated: com/qwertovsky/calculator/Calculator.class loodud: com /qwertovsky/calculator/operation/ täispuhutud: com/qwertovsky/calculator/operation/Adder.class cd .. cp -r bin/* lib/ jar -cef com.qwertovsky.helloworld.HelloWorld helloworld.jar -C lib . rm -r lib Lisage käivitatavasse faili nõutav teegi kood.

Käivitab käivitatava jar-faili

Fail calculator.jar ei ole käivitatav. Aga helloworld.jar saab käivitada.
Kui arhiiv loodi kahel esimesel viisil, siis selle kõrval peaks samas kataloogis olema lib kaust failiga calculator.jar. Sellised piirangud tulenevad asjaolust, et käivitatava failiga seotud tee on määratud manifesti klassi tees.
cd Kalkulaator ls ../HelloWorld/lib calculator.jar java -jar ../HelloWorld/helloworld.jar Kolmas meetod sisaldab käivitatavas failis vajalikud teegid. Teil ei ole vaja läheduses hoida vajalikke raamatukogusid. Jookseb samamoodi.
java -jar ../HelloWorld/helloworld.jar

Kuidas JavaEE rakendustega toime tulla

Samamoodi. Kasutatavast rakendusserverist tuleb võtta ainult koostamiseks mõeldud teegid. Kui ma kasutan JBossi, siis servleti kompileerimiseks peaksin tegema midagi sellist
javac -classpath path/to/jboss/common/lib/jboss-servlet*.jar -d ./classes src/com/qwertovsky/app/servlets/MenuSt.java
JavaEE rakenduste arhiivi struktuur peab järgima teatud vormingut. Näiteks
minu.kõrv `---META-INF | `---manifest.mf `---lib | `---mylib.jar `---my.war | `---META-INF | | `---manifest.mf | `---VEEBI-INF | | `---lib | | | `---myweblib.jar | | `---klassid | | | `---com | | | `---... | | `---web.xml | `---index.html | `---<остальное веб-содержимое (страницы, изображения)>`---myejb.jar
Rakenduse käivitamise viis serveris endas käsurea abil on iga serveri puhul erinev.

Loodan, et sellest artiklist saab kellegi jaoks petuleht Javaga töötamiseks käsurida. Need oskused aitavad teil mõista Ant-skriptide sisu ja tähendust ning vastata keerulisematele intervjuuküsimustele kui "Millist IDE-d eelistate?".

Nüüd näitan, kuidas saate käivitada lihtsat Java-programmi ilma keskkonnata, näiteks rakendusserverita. Piisab ühest klassist, milles defineeritakse põhimeetod.

pakett com.blogspot;
avalik klass ArendajaMärkused(
avalik static void main(String args) (
if (args.length == 0) (
System.out
.println("Edasta käsureaparameetrina tekst, mida soovite näha.");
) muidu (
System.out.println("Sisestasite: " + args);
}
System.out.println ("Allikas saadaval aadressil developer-remarks.blogspot.com");
}
}
Programmi käivitamisel tuleb käsureal edastada tekst, mis kuvatakse ekraanile. Vastasel juhul kuvatakse vastav teade. Kõik programmile edastatud parameetrid sisalduvad stringide massiivis args, mille põhimeetod aktsepteerib. Kui parameetreid ei edastata, on massiivi pikkus null.

Nüüd konfigureerime Eclipse'i nii, et see saaks terminalist jar-faili käivitada. Selleks peate esmalt looma käitamiskonfiguratsiooni. Valige ülemisest menüüst Run - Run Configurations. Avaneb järgmine aken:

Valige vasakpoolsest loendist rakenduse tüüp: Java rakendus. Seal looge uus konfiguratsioon, nagu on näidatud ekraanipildil. Selleks valige sihtprojekt ja klass, millel on põhimeetod.

Oleme nüüd valmis oma projekti eksportima käivitatavasse jar-faili. Selleks klõpsake hiire parema nupuga projektil, valige "Ekspordi ...", avaneb järgmine aken:


Valige puuvaates Runnable Jar fail. Otsingut saab oluliselt lihtsustada, kui filtreerite projekti tüübi nime järgi. Klõpsake nuppu Lõpeta. Pärast seda avaneb ekspordisätete aken:


Valige selles varem loodud käivituskonfiguratsioon. Seejärel sisestage jar-faili täisnimi. Jaotises "Teegi käsitsemine" valige "Extract vajalik teegid genereeritud JAR-i" (pakkige vajalikud teegid lahti loodud arhiivi). Klõpsake nuppu Lõpeta ja käivitatav arhiiv luuakse.

Kuna selles näites ei ole sõltuvusi teistest teekidest, valime esimese üksuse. Aga kui meil oleks mitukümmend või isegi sadu sõltuvusi, siis oleks õigem valida kolmas üksus "Kopeeri vajalikud teegid genereeritud JAR-i kõrvale alamkausta" (kopeeri vajalikud teegid alamkataloogi, osa nimest millest ühtib loodava arhiiviga ), et vältida käivitatava faili "paisumist". Kui oleksime valinud kolmanda üksuse, oleks vajalikud teegid kopeeritud eraldi kausta.

Nüüd avage terminal ja liikuge kataloogi, kus käivitatav jar loodi. Sisestage järgmine käsk:

java -jar developer-remarks.jar tere maailm!

Nii käsite Java-tõlgil meie arhiivi käitada. Arvesta, et käsureal oleva tühiku ja hüüumärgi puhul tuleb kasutada kaldkriipsu.

Näidatud lähenemisviis võib olla kasulik õppe- ja testimise eesmärgil. Näiteks selleks, et luua klient, mis helistab EJB-le ja prindib oma töö tulemuse konsooli. Selle lähenemisviisi eeliseks on jar-arhiivi käivitamine ilma igasuguse keskkonnata. Piisab JDK/JRE olemasolust. Allikad on saadaval.

Ülesanne: Käivitage java rakendus käsurealt.

Näiteks tegin väikese programmi, mis peaks arvutama antud raadiuse ringi pindala. Programm sisaldab kahte klassi: GeometryWF (peamine) ja Circle. See peaks looma konsoolirakenduse. Java-rakenduse käivitamine peab toimuma käsurealt.

pakett geometrywf;
avalik klass GeometryWF(
avalik static void main(String args) (
proovi (
if (args. võrdub("ring")) (
Circle c = new Circle(Double.parseDouble(args));
System.out.println("Ringi ümbermõõt: "+c.perimeter());
System.out.println("Ringi aaria: "+c.area());
}
}
catch(ArrayIndexOutOfBoundsException e) (
System.out.println("Valed sisendparameetrid!");
}
}
}

pakett geometrywf;
avalik klass Circle(
avalik topelt r = 0;
avalik ring (double r) (
this.r = r;
}
avalik topeltala() (
return(Math.PI*r*r);
}
avalik topeltperimeeter() (
return(2*Math.PI*r);
}
}

Järgmine samm on projekti koostamine. Arenduseks kasutan NetBeansi IDE-d. Vastavalt sellele toimub kokkupanek, vajutades kombinatsiooni "Shift + F11" ("Tühjenda ja ehita projekt"). Selle tulemusena saan valmis jar-faili
(C:\Users\Jan\Documents\NetBeansProjects\GeometryWF\dist\GeometryWF.jar).

Käivitage käsurealt.

Enne käsurea käivitamist paremklõpsake ikoonil "Minu arvuti" ja avage "Atribuudid". Minge jaotisse "Täpsemad süsteemiseaded" -> "Keskkonnamuutujad". Jaotises "Süsteemimuutujad" peate looma uue muutuja "JAVA_HOME" väärtusega "" (mul on see "C:\glassfish3\jdk\bin"). Sama tee tuleb kirjutada olemasolevasse Path muutujasse pärast semikoolonit. Salvestame kõik ja käivitame käsurea.

Muudame kataloogi jar-failiga kaustaks, kasutades käsku CHDIR:

C:\Kasutajad\John> CHDIR C:\Users\John\Documents\NetBeansProjects\GeometryWF\dist\

Käivitame java rakenduse käsurealt, kasutades käsku "java -jar .

C:\Users\John\Documents\NetBeansProjects\GeometryWF\dist> java -jar GeometryWF.jar ring 9

Väljundis saame:

Ringi ümbermõõt: 56,548667764616276
Ringi ruut: 254.46900494077323



Toeta projekti – jaga linki, aitäh!
Loe ka
kukevõitlusmängu reeglid kukevõitlusmängu reeglid Modifikatsioon minecraft 1.7 jaoks 10 vaatamise retsepti.  Retseptid esemete meisterdamiseks Minecraftis.  Relvad Minecraftis Modifikatsioon minecraft 1.7 jaoks 10 vaatamise retsepti. Retseptid esemete meisterdamiseks Minecraftis. Relvad Minecraftis Šilling ja naelsterling – sõnade päritolu Šilling ja naelsterling – sõnade päritolu