Een Java-toepassing uitvoeren op Windows 7. Bash-script - voor computers met UNIX en Linux

Tegenwoordig maakt niemand meer programma's in de console. Met behulp van een favoriete IDE voelt een ontwikkelaar zich ongemakkelijk op de computer van iemand anders waar deze niet aanwezig is.
Nadat ik had besloten het werk van Ant en Maven te begrijpen, realiseerde ik me dat ik de applicatie niet zonder hen in de console kon bouwen.
In dit artikel heb ik geprobeerd alle fasen van het ontwerpen van een demo-applicatie te behandelen, om niet bij elke opdracht op internet naar hulp te zoeken.

Van eenvoudig tot...

Elk programma bevindt zich meestal in een aparte map. Ik houd me aan de regel om in deze directory te creëren door ten minste twee mappen: src en bin. De eerste bevat de broncodes, de tweede bevat het compilatieresultaat. Deze mappen hebben een mapstructuur, afhankelijk van de pakketten.

Eén bestand

Je kunt het doen zonder extra mappen.
Laten we het HelloWorld.java-bestand zelf nemen. public class HelloWorld ( public static void main(String args) ( System.out.println(" Hallo wereld!"); } }
Ga naar de map waar het zich bevindt dit bestand en voer de opdrachten uit.
javac HelloWorld.java Het bestand HelloWorld.class verschijnt in deze map. Dit betekent dat het programma is gecompileerd. Om te rennen
Java-klassepad. Hallo Wereld

Binaire bestanden scheiden van bronnen

Nu gaan we hetzelfde doen, maar dan met catalogi. Laten we een HelloWorld-map maken met daarin twee mappen src en bin.
Compileren
javac -d bin src/HelloWorld.java Hier hebben we dat gespecificeerd binaire bestanden erin zal worden opgeslagen aparte map bin en raak niet in de war met de bronnen.

Laten we lanceren
java -classpath ./bin HelloWorld

Wij maken gebruik van pakketten

Anders zal het programma plotseling niet langer alleen maar HelloWorld zijn. Het is beter om pakketten duidelijk en overzichtelijk aan te geven unieke naam. Dit zal toevoegen dit programma naar een ander project zonder naamconflict. Na het lezen van enkele artikelen zou je kunnen denken dat een pakketnaam beslist een domein nodig heeft. Dit is verkeerd. Domeinen zijn een handige manier om uniciteit te bereiken. Als u geen eigen domein heeft, gebruik dan een account op de website (bijvoorbeeld ru.habrahabr.mylogin). Het zal uniek zijn. Houd er rekening mee dat pakketnamen in kleine letters moeten zijn. En vermijd het gebruik van speciale tekens. Er ontstaan ​​problemen als gevolg van verschillende platforms en bestandssystemen.

Laten we onze klas in een pakket plaatsen met de naam com.qwertovsky.helloworld. Om dit te doen, voegt u de regel toe aan het begin van het bestand
pakket com.qwertovsky.helloworld;
Compileren
javac -d bin src/com/qwertovsky/helloworld/HelloWorld.java De bin-map maakt automatisch een mapstructuur die lijkt op src.
HelloWorld "---bin " "---com " "---qwertovsky " "---helloworld " "---HelloWorld.class "---src "---com "---qwertovsky "-- -helloworld "---HelloWorld.java
Laten we lanceren
java -classpath ./bin com.qwertovsky.helloworld.HelloWorld

Als er meerdere bestanden in het programma staan

Laten we het programma veranderen.
Hallo Wereld.java
pakket 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("Hallo wereld!"); System.out.println( a+"+"+b+"="+berekening.som(a,b));
Rekenmachine.java
pakket com.qwertovsky.helloworld; importeer com.qwertovsky.helloworld.operation.Adder; public class Calculator ( public int sum(int... a) ( Adder adder=new Adder(); for(int i:a) ( adder.add(i); ) return adder.getSum(); ) )
Adder.java
pakket 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() ( retoursom; ) )
Compileren
javac -d bin src/com/qwertovsky/helloworld/HelloWorld.java src\com\qwertovsky\helloworld\HelloWorld.java:9: kan het symbool niet vinden: klasse Locatie van de rekenmachine: klasse com.qwertovsky.helloworld.HelloWorld Calculator calc=nieuw Rekenmachine();
^ src\com\qwertovsky\helloworld\HelloWorld.java:9: kan symbool niet vinden: klasse Calculatorlocatie: klasse com.qwertovsky.helloworld.HelloWorld Calculator calc=new Calculator();
Compileren
^2 fouten
Laten we lanceren
De fout is opgetreden omdat voor de compilatie bestanden nodig zijn met de broncodes van de klassen die worden gebruikt (de klasse Calculator). U moet de map met de bestanden opgeven voor de compiler met behulp van de schakeloptie -sourcepath.

javac -bronpad ./src -d bin src/com/qwertovsky/helloworld/HelloWorld.java

java -classpath ./bin com.qwertovsky.helloworld.HelloWorld Hallo Woord 2+3=5
Als het resultaat verrast
Het is mogelijk om de debugger te starten. Daar is jdb voor.
Eerst compileren we met de schakeloptie -g, zodat de debugger informatie heeft.
javac -g -bronpad ./src -d bin src/com/qwertovsky/helloworld/HelloWorld.java
Start de foutopsporing
Geef een breekpunt op op regel 9 in de klasse Calculator
> stop bij com.qwertovsky.helloworld.Calculator:9 Uitstellen van breekpunt com.qwertovsky.helloworld.Calculator:9.
Het wordt ingesteld nadat de klasse is geladen.
Laten we beginnen met de uitvoering.
> uitvoeren uitvoeren com.qwertovsky.helloworld.HelloWorld Stel niet-afgevangen java.lang.Throwable in Stel uitgestelde niet-afgevangen java.lang.Throwable in > VM gestart: stel uitgesteld breekpunt in com.qwertovsky.helloworld.Calculator:9 Hallo wereld! Breekpunthit: "thread=main", com.qwertovsky.helloworld.Calculator.sum(), line=9 bci=0 9 Adder adder=new Adder(); Om u te oriënteren, kunt u een stukje broncode weergeven, waar in
op dit moment
de cursor bevindt zich.
hoofdlijst 5 openbare klasse Rekenmachine 6 ( 7 public int sum(int... a) 8 ( 9 => Adder adder=new Adder(); 10 for(int i:a) 11 ( 12 adder.add(i); 13 ) 14 retourneer opteller.getSum();
Laten we eens kijken wat variabele a is.
main print a a = instantie van int (id=340) main dump a a = ( 2, 3 ) main stop op com.qwertovsky.helloworld.operation.Adder:19 Uitstellen van breekpunt com.qwertovsky.helloworld.operation.Adder:19.
Het wordt ingesteld nadat de klasse is geladen. Laten we doorgaan met de executie. main cont > Uitgesteld breekpunt instellen com.qwertovsky.helloworld.operation.Adder:19 Breekpunthit: "thread=main", com.qwertovsky.helloworld.operation.Adder.add(), line=19 bci=0 19 sum+=b ; hoofdlijst 15 ) 16 17 public void add(int b) 18 ( 19 => sum+=b; 20 ) 21 22 public int getSum() 23 ( 24 return sum; hoofdafdruk som som = 0 hoofdafdruk b b = 2
Laten we de code invoeren
huidige lijn
en we zullen zien dat de som gelijk wordt aan 2.
hoofdstap > Stap voltooid: "thread=main", com.qwertovsky.helloworld.operation.Adder.add(), line=20 bci=10 20 ) hoofdafdruk som som = 2
Laten we van de klasse Adder naar de klasse Calculator gaan die deze heeft aangeroepen.
main step up > Stap voltooid: "thread=main", com.qwertovsky.helloworld.Calculator.sum(), line=10 bci=36 10 for(int i:a)
Een breekpunt verwijderen
We controleren de waarde van de expressie en voltooien de uitvoering.
main eval adder.getSum() adder.getSum() = 5 main cont > 2+3=5 De applicatie is afgesloten

Het zou goed zijn om te testen

Wij gebruiken JUnit.
pakket com.qwertovsky.helloworld; importeer statische org.junit.Assert.*; java.util.Arrays importeren; java.util.Collection importeren; importeer org.junit.Test; importeer org.junit.runner.RunWith; importeer org.junit.runners.Parameterized.Parameters; @RunWith(value=org.junit.runners.Parameterized.class) openbare klasse TestCalculator ( int verwacht; int arg; @Parameters openbare statische verzameling parameters() ( return Arrays.asList(new int( ((4), (2, 2)) ,((-1),(4, -5)) ,((0),(0,0,0) ) ,((0),()) ) ) public TestCalculator(int verwacht, int arg) ( this.expected=expected; this.arg=arg; ) @Test public void testSum() ( Calculator c=new Calculator () ; assertEquals(verwacht,c.sum(arg));
Compileren
mkdir test_bin javac -classpath lib/path/junit-4.8.2.jar -sourcepath ./src -d test_bin test/com/qwertovsky/helloworld/TestCalculator.java
Laten we lanceren. ";" wordt gebruikt als scheidingsteken voor meerdere paden in het klassenpad op Windows, en " op Linux. Beide scheiders werken niet in de Cygwin-console. Misschien zou ";" moeten werken, maar het wordt behandeld als een opdrachtscheidingsteken.
java -classpath lib/path/junit-4.8.2.jar:./test_bin org.junit.runner.JUnitCore com.qwertovsky.helloworld.TestCalculator JUnit versie 4.8.2 .... Tijd: 0.031 OK (4 tests)

Laten we een bibliotheek maken

De klasse Calculator is nuttig gebleken en kan in veel projecten worden gebruikt. Laten we alles met betrekking tot de klasse Calculator naar een apart project verplaatsen.
HelloWorld "---bin "---src "---com "---qwertovsky "---helloworld "---HelloWorld.java-rekenmachine "---bin "---src " "---com " "---qwertovsky " "---rekenmachine " "---Calculator.java " "---bewerking " "---Adder.java "---test "---com "---qwertovsky " ---rekenmachine "---TestCalculator.java
Wijzig ook de pakketnamen in de bronnen. U moet de regel toevoegen aan HelloWorld.java
importeer com.qwertovsky.calculator.Calculator;
Laten we compileren.
cd Rekenmachine javac -sourcepath src -d bin src/com/qwertovsky/calculator/Calculator.java
Een jar-archief maken
jar cvf rekenmachine.jar -C bin .
manifest toegevoegd toevoegen: com/(in = 0) (out= 0)(opgeslagen 0%) toevoegen: com/qwertovsky/(in = 0) (out= 0)(opgeslagen 0%) toevoegen: com/qwertovsky/calculator/ (in = 0) (out= 0)(opgeslagen 0%) toevoegen: com/qwertovsky/calculator/Calculator.class(in = 497) (out= 373)(gedefleerd 24%) toevoegen: com/qwertovsky/calculator/operation /(in = 0) (uit= 0)(opgeslagen 0%) optellend: com/qwertovsky/calculator/operation/Adder.class(in = 441) (uit= 299)(leeggelopen 32%)

Met behulp van de schakeloptie -C hebben we het programma in de bin-map gestart.

We moeten uitzoeken wat er in de bibliotheek zit
Je kunt het archief uitpakken met een zip-uitpakker en zien welke klassen er in de bibliotheek staan.
Informatie over elke klasse kan worden verkregen met behulp van de javap-disassembler. javap -c -classpath calculator.jar com.qwertovsky.calculator.Calculator Samengesteld uit de openbare klasse "Calculator.java" com.qwertovsky.calculator.Calculator breidt java.lang.Object( public com.qwertovsky.calculator.Calculator(); Code uit : 0: aload_0 1: beroep op speciaal #1; //Methode java/lang/Object." ":()V 4: return public int sum(int); Code: 0: new #2; //class com/qwertovsky/calculator/operation/Adder 3: dup 4: invokespecial #3; //Methode com/qwertovsky /rekenmachine/bewerking/optelling."
":()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 42 24: aload_3 25: iload 5 27: iaload 28: istore 6 30: aload_2 31: iload 6 33: invokevirtual #4; //Methode com/qwertovsky/calculator/operation/Adder.add:(I)V 36: iinc 5, 1 39: goto 17 42 : aload_2 43: invokevirtual #5; //Methode com/qwertovsky/calculator/operation/Adder.getSum:()I 46: ireturn )
Uit het resultaat blijkt dat de klasse, naast een lege constructor, nog een sommethode bevat, waarbinnen de add-methode van de Adder-klasse in een lus wordt aangeroepen. Wanneer de sommethode is voltooid, wordt Adder.getSum() aangeroepen.
Zonder de schakeloptie -c produceert het programma alleen een lijst met variabelen en methoden (als u -private gebruikt, dan alles).

javap -private -classpath calculator.jar com.qwertovsky.calculator.operation.Adder Samengesteld uit "Adder.java" public class com.qwertovsky.calculator.operation.Adder breidt java.lang.Object( private int sum; public com.qwertovsky uit .calculator.operation.Adder(); public com.qwertovsky.calculator.operation.Adder(int);

Het is beter om de bibliotheek te voorzien van documentatie
pakket com.qwertovsky.calculator; importeer com.qwertovsky.calculator.operation.Adder; /** * Een rekenmachine die kan optellen * @author Qwertovsky * */ public class Calculator ( /** * De som van termen bepalen * @param een ​​array van termen * @return de som */ public int sum(int.. a) ( Adder adder=nieuwe Adder(); for(int i:a) ( adder.add(i); ) return adder.getSum();
Documentatie kan worden gemaakt met de volgende opdracht. Als er een fout optreedt, geeft het programma een lijst weer mogelijke opties.
mkdir doc javadoc -d doc -charset utf-8 -bronpad src -auteur -subpakketten com.qwertovsky.calculator
Het resultaat zal het volgende zijn

U kunt het jar-archief ondertekenen

Als u uw bibliotheek moet ondertekenen digitale handtekening, keytool en jarsigner komen te hulp.
Een handtekening genereren.
keytool -genkey -keyalg rsa -keysize 2048 -alias qwertokey -keystore pad/naar/qwerto.keystore Voer keystore-wachtwoord in: Voer nieuw wachtwoord opnieuw in: Wat zijn uw voor- en achternaam? : Valery Qwertovsky Wat is de naam van uw organisatie-eenheid?: Qwertovsky Wat is de naam van uw organisatie? : Qwertovsky Wat is de naam van uw stad of plaats? : Tver Wat is de naam van uw staat of provincie?
: Tverskaja obl.
Wat is het tweeletterige land
coderen voor
deze eenheid?
: RU Is CN=Valery Qwertovsky, OU=Qwertovsky, O=Qwertovsky, L=Tver, ST=Tverskaya obl., C=RU correct?
: y Enter-toets
wachtwoord voor
(RETURN indien hetzelfde als keystore-wachtwoord): Voer het nieuwe wachtwoord opnieuw in:

Certificaatondertekeningsverzoek (CSR) genereren

keytool -certreq -bestandspad/naar/qwertokey.crt -alias qwertokey -keystore pad/naar/qwerto.keystore
Compileren
De inhoud van het ontvangen bestand wordt naar de certificeringsinstantie gestuurd. Wij ontvangen een certificaat van de certificeringsinstantie. Sla het op in een bestand (bijvoorbeeld qwertokey.cer) en importeer het in de opslag
Laten we lanceren
java -classpath bin:pad/naar/calculator.jar com.qwertovsky.helloworld.HelloWorld

Het samenstellen van het programma

Dit kan op verschillende manieren.

Eerste manier

cd HelloWorld echo hoofdklasse: com.qwertovsky.helloworld.HelloWorld>manifest.mf echo klassenpad: lib/calculator.jar >>manifest.mf mkdir lib cp pad/naar/calculator.jar lib/calculator.jar jar - cmf manifest.mf helloworld.jar -C bin .
Er zijn hier subtiliteiten.
In de rij
hoofdklasse: com.qwertovsky.helloworld.HelloWorld
er mogen geen spaties aan het einde zijn.
De tweede subtiliteit wordt beschreven in: in dezelfde regel moet er een overdracht zijn naar volgende regel. Dit is als het manifest wordt gearchiveerd door een archiveringshulpmiddel van derden.
Het jar-programma neemt de laatste regel uit het manifest niet op, tenzij er aan het einde een regeleinde is.
Nog een punt: het manifest mag dit niet bevatten lege regels tussen de regels. De fout "java.io.IOException: ongeldig manifestformaat" zal worden gegenereerd.

Wanneer u het echo-commando gebruikt, hoeft u alleen maar op de spatie aan het einde van de hoofdklasseregel te letten.

Tweede manier

cd HelloWorld echo klassenpad: lib/calculator.jar >manifest.mf mkdir lib cp pad/naar/calculator.jar lib/calculator.jar jar -cmef manifest.mf com.qwertovsky.helloworld.HelloWorld helloworld.jar -C bin .
IN deze methode fouten met spaties in de hoofdklasse vermijden.

Derde manier

cd HelloWorld mkdir lib cd lib jar -xvf pad/naar/calculator.jar com/ gemaakt: com/ gemaakt: com/qwertovsky/ gemaakt: com/qwertovsky/calculator/ opgeblazen: com/qwertovsky/calculator/Calculator.class gemaakt: com /qwertovsky/calculator/operation/ opgeblazen: com/qwertovsky/calculator/operation/Adder.class cd .. cp -r bin/* lib/ jar -cef com.qwertovsky.helloworld.HelloWorld helloworld.jar -C lib . rm -r lib
We hebben de code van de vereiste bibliotheek in het uitvoerbare bestand opgenomen.

Het uitvoerbare jar-bestand uitvoeren

Het calculator.jar-bestand is niet uitvoerbaar. Maar helloworld.jar kan worden gelanceerd.
Als het archief met de eerste twee methoden is gemaakt, moet er daarnaast in dezelfde map een map lib staan ​​met het bestand calculator.jar. Dergelijke beperkingen zijn te wijten aan het feit dat het klassenpad in het manifest het pad specificeert ten opzichte van het uitvoerbare bestand.
cd Rekenmachine ls ../HelloWorld/lib calculator.jar java -jar ../HelloWorld/helloworld.jar
Bij gebruik van de derde methode benodigde bibliotheken opgenomen in het uitvoerbare bestand. Het is niet nodig om de benodigde bibliotheken in de buurt te houden. Het begint op dezelfde manier.
java -jar ../HelloWorld/helloworld.jar

Wat te doen met JavaEE-applicaties

Insgelijks. Alleen bibliotheken voor compilatie hoeven te worden opgehaald van de applicatieserver die wordt gebruikt. Als ik JBoss gebruik, moet ik om de servlet te compileren zoiets als het volgende doen
javac -classpath pad/to/jboss/common/lib/jboss-servlet*.jar -d ./classes src/com/qwertovsky/app/servlets/MenuSt.java
De archiefstructuur van een JavaEE-applicatie moet een specifiek formaat volgen. Bijvoorbeeld
mijn.oor `---META-INF | `---manifest.mf `---lib | `---mijnlib.jar `---mijn.war | `---META-INF | | `---manifest.mf | `---WEB-INF | | `---lib | | | `---mijnweblib.jar | | `---lessen | | | `---com | | | `---... | | `---web.xml | `---index.html | `---<остальное веб-содержимое (страницы, изображения)>`---mijnejb.jar
Manieren om de applicatie op de server zelf uit te voeren met behulp van opdrachtregel zijn voor elke server verschillend.

Ik hoop dat dit artikel een spiekbriefje wordt voor iemand die met Java op de opdrachtregel wil werken. Deze vaardigheden helpen je de inhoud en betekenis van Ant-scripts te begrijpen en lastigere interviewvragen te beantwoorden dan 'Welke IDE vind je het leukst?'

De programmeertaal Java wint snel aan populariteit vanwege zijn eenvoud en functionaliteit. Veel mobiele en computertoepassingen geschreven in deze taal. Het is vermeldenswaard dat applicaties voor Android-apparaten in Java zijn geschreven.

Downloaden Java is volledig beschikbaar op de officiële website gratis. Er kan echter een probleem zijn met de programmaversie. Allereerst moet je kiezen tussen 32-bits En 64-bits versie. Als de computer het toestaat, is het natuurlijk beter om te stoppen op 64 jaar, zo streng is het niet beperkingen over geheugengebruik.

Dan moet je beslissen - installeren Java-ontwikkeling Kit (JDK) of Java Runtime Environment (JRE). Alles is uiterst eenvoudig en duidelijk als je de afkorting vertaalt. JDK is een ontwikkelingskit. Het wordt gebruikt om programma's in deze taal te maken.

JRE Hiermee kunt u alleen applicaties starten. Het is trouwens opgenomen in de JDK.

Het pakket installeren

Installatie verschilt niet van andere toepassingen. Laten we bijvoorbeeld de pakketinstallatie nemen JDK.

Instellingen voor omgevingsvariabelen

Helaas maakt het installatieprogramma niet alle benodigde instellingen, dus variabele omgeving moet handmatig worden geconfigureerd.

Allereerst moet u dit aangeven variabelJava_ thuis, dat het pad bevat naar de map waarin Java is geïnstalleerd. Deze variabele gebruik veel programma's om naar te kijken locatie Java.

Dan moet je het in een variabele plaatsen pad locatie registreren %JAVA_HOME%\bin. Het wordt door het besturingssysteem gebruikt om een ​​lijst met mappen weer te geven waar het uitvoerbare bestand kan worden gevonden. Zij ook gebruikt Voor Java-opstartprogramma vanaf de console.

Eerst moet je naar computereigenschappen. Iedereen kan dit doen op een handige manier bellen, bijvoorbeeld contextmenu Mijn computer en klik Eigenschappen of druk op de combinatie Win+Pauze.

Laten we nu opengaan Extra opties systemen en ga in het volgende venster naar de bladwijzer Aanvullend. Hier gaan we naar Omgevingsvariabelen(knop hieronder).

Als de systeemvariabelen al zijn ingevoerd Java_ thuis dan heb je het nodig bewerking. Als het niet bestaat, maken we een nieuwe. Hier zullen we nodig hebben pad instellen Naar Java geïnstalleerd. Bijvoorbeeld c:\Program Files\Java\jdk\ of een andere plaats waar de installatie werd uitgevoerd.

Nu moet u wijzigingen aanbrengen in de variabele Pad. Hier geven we bijvoorbeeld het pad aan naar de map waar de uitvoerbare bestanden zich bevinden %JAVA_HOME%\bin.

Sluit nu alle vensters door op te drukken OK, waarbij de wijzigingen worden opgeslagen.

Het is vermeldenswaard dat voor de JDK de installatiemap cijfers– pakketversie. Daarom moet u elke keer dat u een update uitvoert, de map wijzigen JAVA_ THUIS, anders start het programma gewoon niet.

Het verwijderen van onnodige bestanden

Nu blijft het schoon systeem van onnodige bestanden. Om dit te doen lanceren we opdrachtregel(cmd). Dan gebruiken we het commando waar Java. De console zou het pad moeten weergeven Java-installaties. Als map niet gevonden– dit betekent dat de padvariabele onjuist is gevuld. Echter Het gebeurt dat het systeem verschillende uitvoerbare bestanden vindt.

Dit komt door het feit dat installateur probeert verkeerd afstemmen omgevingsvariabelen. Die. probeert ze in een map te installeren systeem32 .

Dit is slecht omdat... systeemmap raakt verstopt en je kunt verwachten onjuiste bediening programma's. Volg in dit geval het pad aangegeven in de console en verwijderen alle bestanden: java.exe, javaws.exe en javaw.exe. Als sommige van deze bestanden niet worden gevonden, dan verwijderen alleen de bestanden die zich in de map bevinden.

Taak: Start een Java-toepassing vanaf de opdrachtregel.

Ik heb bijvoorbeeld een klein programma gemaakt dat de oppervlakte van een cirkel moet berekenen op basis van een bepaalde straal. Het programma bevat twee klassen: GeometryWF (hoofd) en Circle. Het is de bedoeling dat er een console-applicatie wordt gemaakt. De Java-toepassing moet worden gestart vanaf de opdrachtregel.

pakketgeometriewf;
openbare klasse GeometryWF(
public static void main(String args) (
poging (
if (args.is gelijk aan("cirkel")) (
Cirkel c = nieuwe cirkel(Double.parseDouble(args));
System.out.println("Cirkelomtrek: "+c.perimeter());
System.out.println("Cirkel aria: "+c.area());
}
}
catch(ArrayIndexOutOfBoundsException e) (
System.out.println("Ongeldige invoerparameters!");
}
}
}

pakketgeometriewf;
openbare klasse Cirkel (
openbare dubbele r = 0;
openbare cirkel(dubbele r) (
dit.r = r;
}
openbaar dubbel gebied() (
return(Wiskunde.PI*r*r);
}
openbare dubbele omtrek() (
return(2*Wiskunde.PI*r);
}
}

Vervolgens moet je het project samenstellen. Voor ontwikkeling gebruik ik NetBeans IDE. Dienovereenkomstig assembleer ik door op de combinatie "Shift+F11" ("Het project wissen en monteren") te drukken. Bij de uitvoer krijg ik een kant-en-klaar jar-bestand
(C:\Users\Ivan\Documents\NetBeansProjects\GeometryWF\dist\GeometryWF.jar).

Uitvoeren vanaf de opdrachtregel.

Voordat u de opdrachtregel start, klikt u op klik met de rechtermuisknop Klik op het pictogram "Deze computer" en open "Eigenschappen". Ga naar "Geavanceerde systeeminstellingen" -> "Omgevingsvariabelen". In de sectie "Systeemvariabelen" moet u een nieuwe variabele "JAVA_HOME" maken met de waarde "" (voor mij is dit "C:\glassfish3\jdk\bin"). Hetzelfde pad moet worden ingevoerd in de bestaande Path-variabele na de puntkomma. Sla alles op en start de opdrachtregel.

Wijzig de map naar de map met het jar-bestand met behulp van de CHDIR-opdracht:

C:\Gebruikers\Ivan> CHDIR C:\Users\Ivan\Documents\NetBeansProjects\GeometryWF\dist\

We starten de Java-applicatie vanaf de opdrachtregel met behulp van het commando "java -jar.

C:\Users\Ivan\Documents\NetBeansProjects\GeometryWF\dist> java -jar GeometryWF.jar cirkel 9

Bij de uitvoer krijgen we:

Cirkelomtrek: 56,548667764616276
Cirkelvierkant: 254.46900494077323

Een van de favoriete vragen van beginnende programmeurs in Java (en niet alleen in Java)
Laten we beginnen met compileren en uitvoeren.
Ten eerste kunnen Java-applicaties niet zonder een virtuele machine; om er een te hebben, moet je grofweg de JDK (Java Development Kit) installeren, je kunt deze rechtstreeks downloaden van de Oracle-website.
Laten we kijken omgevingsvariabelen die wij hebben.
Dit gaat als volgt: klik met de rechtermuisknop op “Deze computer” -> “Eigenschappen” -> “Geavanceerd” -> “Omgevingsvariabelen”.
De PATH-variabele moet het pad naar bevatten uitvoerbare bestanden JDK, waar java.exe (virtuele machine, dat bytecode uitvoert die is gecompileerd door het hulpprogramma javac.exe) en javac.exe(compiler, vertaalt bestanden met de Java-extensie naar bytecode, bestanden met de class-extensie)
Laten we beginnen met het organiseren van de mappen.
Voor een consolegame over een grootmoeder maken we bijvoorbeeld een Game-map.
Vervolgens moeten we er een map in maken klassen En src.
IN src we zullen bestanden opslaan Java.
IN klassen samengesteld klas bestanden.

Laten we het voorbeeld uit het artikel gebruiken.
In een map src maak een map babspel.
Elk pakket pakket- dit is een map, en babspel We hebben een pakketje, vergeet dat niet.
Het wordt aanbevolen om pakketten naar domeinnamen te vernoemen, omdat De pakketnaam is uniek. Bijvoorbeeld als we een pakketje hebben su.clan.pr0gram, dan moet u eerst drie submappen maken zo, Dan clan en aan het eind programma, en het bevat al de bestanden van ons programma.
We maken een bestand met de Java-extensie in babgame en schrijven daar de programmacode, slaan het op, sluiten babgame af, verlaten vervolgens src en gaan naar Game.
Een script schrijven voor de console - compile.cmd

Javac -klassenpad ./classes -d ./classes -s ./src src/babgame/Main.java -codering Cp1251
pauze


pauze kan worden verwijderd, dit is een vertraging voor het geval de compiler fouten genereert.
Javac- zoals je waarschijnlijk al hebt begrepen, is dit een compiler die een paar dozijn parameters accepteert, waarvan we er een paar hebben gebruikt.
-klassenpad ./classes- geef aan in welke map we lessen hebben
-d ./klassen- geef aan in welke map we zullen genereren klasse bestand S
-s./src- geef de map met de bronnen aan (u hoeft in principe niet te schrijven)
src/babgame/Main.java- het bestand zelf bevindt zich in de map src (voor mij heet het Main.java)
Vergeet trouwens niet dat de naam van de klasse die wordt beschreven in een bestand met de Java-extensie moet overeenkomen met de naam van het bestand (zonder extensie) (in sommige systemen hangt zelfs het geval van schrijven, lager of hoger, af)
-codering van Cp1251- specificeert in welke codering het bestand moet worden gelezen broncode programma's. (er wordt aangenomen dat de broncode voor Windows is geschreven)

Het gecompileerde bestand wordt in de map geplaatst klassen.
We schrijven het volgende script:
run.cmd

Java -Dfile.encoding=Cp866 -classpath ./classes Main


Java- voert ons klassenbestand uit.
-Dfile.encoding=Cp866- geeft aan in welke codering de uitvoer moet worden geproduceerd.
Omdat onze console standaard naar Cp866 stuurt, zullen we dat doen.
-klassenpad ./classes- geef de map aan waarin we de lessen opslaan.
Voornaamst- de naam van de klasse waarin we de methode main() hebben, zonder welke, zoals we weten, het programma niet zal starten.

We maken deze twee scripts in de map Spel, ik wil u er nogmaals aan herinneren.
Nou, dat is alles, je kunt tot de ochtend spelen!

Hoe voer je een Java-programma uit?

Antwoord van de meester:

Een aanvraag geschreven in Java-taal, is een jar-archief of een set *.java- en *.class-bestanden, als de componenten van dit programma niet zijn gecompileerd in een uitvoerbaar jar-archief. Om te kunnen rennen soortgelijke toepassing, moet u het Java Runtime Environment-programma installeren.

Om dit te doen, moet u naar de officiële websitepagina gaan Java-ontwikkelaars, dat zich op http://java.sun.com/javaee/sdk/ bevindt, en download vervolgens nieuwste versie Java-machines. Vervolgens moet u het programma op uw harde schijf installeren persoonlijke computer en geef aan het besturingssysteem het pad aan naar de bestanden die u hebt geïnstalleerd, waarvoor u aan de padparameter van de omgevingsvariabelen (het tabblad heet "Geavanceerd", gelegen in het computereigenschappenvenster) het pad moet toevoegen naar de locatie waar de programma is geïnstalleerd.

Het hoofdmenu gebruiken of invoeren cmd-opdracht, in het veld "Uitvoeren" moet u de opdrachtregel starten. Ga op de opdrachtregel naar de map van het Java-programma dat u wilt uitvoeren. Na voltooiing van deze procedure voert u het commando java -cp [bestandsnaam].jar [naam van de hoofdklasse van het programma] in en drukt u op de Enter-toets, hierdoor wordt het bestand uitgevoerd.

Om Java-bestanden te compileren, moet u het commando javac[hoofdbestandsnaam].java invoeren, gevolgd door java -cp [bestandsnaam]. Nadat u informatie heeft ontvangen over de parameters voor het starten van Java-bestanden vanaf de opdrachtregel, moet u invoeren Java-operator-help en druk op Enter.

Er verschijnt een volledige lijst op het scherm beschikbare commando's samen met hun opties. Alle commando's moeten nauwkeurig worden ingevoerd, omdat het invoeren van een verkeerde combinatie het geheel kan beschadigen besturingssysteem uw pc.

Als u minigames op uw computer wilt uitvoeren die in Java zijn geschreven mobiele apparaten, dan moet u het MidpX-programma downloaden. Met deze applicatie kunt u jar-bestanden uitvoeren zonder onnodige complicaties. Nadat u deze software hebt geïnstalleerd, klikt u met de rechtermuisknop op een van de jar-bestanden en selecteert u het item met de naam "Eigenschappen". In het venster dat verschijnt, moet u op de knop "Wijzigen" klikken en het programma selecteren dat geschikt is om dit type bestand te openen, dat wil zeggen het MidpX-hulpprogramma.