Java programı bilgisayarda nasıl çalıştırılır. Java masaüstü uygulamalarının paketlenmesi ve dağıtımı. Sonuç sizi şaşırttıysa

  • 04.04.2019

Artık kimse konsolda program oluşturmuyor. En sevdiğiniz IDE'yi kullanan geliştirici, olmadığı yerde başka birinin bilgisayarında rahatsız olur.
Ant ve Maven'in çalışmalarını anlamaya karar vererek, konsolda onlarsız uygulamayı oluşturamadığımı fark ettim.
Bu yazımda, internette her komut için yardım aramamak için bir demo uygulaması tasarlamanın tüm aşamalarını sığdırmaya çalıştım.

Basitten ...

Her program genellikle ayrı bir dizinde bulunur. Benim kuralım bu dizinde en az iki klasör oluşturmak: src ve bin. Birincisi kaynak kodlarını, ikincisi - derlemenin sonucunu içerir. Bu klasörler paketlere bağlı olarak bir dizin yapısına sahip olacaktır.

bir dosya

Ekstra klasörler olmadan yapabilirsiniz.
HelloWorld.java dosyasının kendisini alıyoruz. public class HelloWorld ( public static void main(String args) ( System.out.println("Merhaba Dünya!"); ) )
olduğu dizine gidin verilen dosya ve komutları yürütün.
javac HelloWorld.java HelloWorld.class dosyası bu klasörde görünecektir. Böylece program derlenir. başlatmak için
java -sınıf yolu . Selam Dünya

İkili dosyaları kaynaklardan ayırma

Şimdi aynısını yapacağız, ancak dizinlerle. İçinde src ve bin klasörleri bulunan bir HelloWorld dizini oluşturalım.
derleme
javac -d bin src/HelloWorld.java Burada belirtmiştik ki ikili dosyalar içinde tutulacak ayrı klasör bin ve kaynakla karıştırmayın.

fırlatıyoruz
java -classpath ./bin HelloWorld

paketleri kullanıyoruz

Ve sonra birdenbire program sadece HelloWorld olmaktan çıkacak. Paketlere en iyi şekilde anlamlı ve benzersiz bir ad verilir. Bu ekleyecek bu program adlandırma çakışması olmayan başka bir projeye. Bazı makaleleri okuduktan sonra, paket adının mutlaka bir etki alanına ihtiyacı olduğunu düşünebilirsiniz. Bu doğru değil. Etki alanları uygun yol benzersizliğe ulaşmak. Kendi alan adınız yoksa, sitede bir hesap kullanın (örneğin, ru.habrahabr.mylogin). Eşsiz olacak. Paket adlarının içinde olması gerektiğini unutmayın. küçük harf. Ve özel karakterler kullanmaktan kaçının. Sorunlar nedeniyle ortaya çıkıyor farklı platformlar ve dosya sistemleri.

Sınıfımızı com.qwertovsky.helloworld adlı bir pakete yerleştirelim. Bunu yapmak için dosyanın başına bir satır ekleyin.
paket com.qwertovsky.helloworld; Dosyanın yolu şöyle görünecek şekilde src dizininde ek dizinler oluşturalım: src/com/qwertovsky/helloworld/HelloWorld.java.
derleme
javac -d bin src/com/qwertovsky/helloworld/HelloWorld.java Bin dizini otomatik olarak src'ye benzer bir dizin yapısına sahip olacaktır.
HelloWorld "---bin " "---com " "---qwertovsky " "---helloworld " "---HelloWorld.class "---src "---com "---qwertovsky "-- -helloworld "---HelloWorld.java
fırlatıyoruz
java -classpath ./bin com.qwertovsky.helloworld.HelloWorld

Programda birden fazla dosya varsa

Programı değiştirelim.
MerhabaDünya.java
paket 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("Merhaba Dünya!"); System.out.println( a+"+"+b+"="+calc.sum(a,b)); ) )
Calculator.java
paket com.qwertovsky.helloworld; com.qwertovsky.helloworld.operation.Adder'ı içe aktarın; public class Hesap Makinesi ( public int sum(int... a) ( Adder adder=new Adder(); for(int i:a) ( adder.add(i); ) return adder.getSum(); ) )
Adder.java
paket com.qwertovsky.helloworld.operasyon; public class Toplayıcı ( private int toplam; public Adder() ( sum=0; ) public Adder(int a) ( this.sum=a; ) public void add(int b) ( sum+=b; ) public int getSum() ( dönüş toplamı; ) )
derleme
javac -d bin src/com/qwertovsky/helloworld/HelloWorld.java src\com\qwertovsky\helloworld\HelloWorld.java:9: sembol sembolü bulunamıyor: class Hesap makinesi konumu: class com.qwertovsky.helloworld.HelloWorld Hesap Makinesi calc=new hesap makinesi(); ^ src\com\qwertovsky\helloworld\HelloWorld.java:9: sembol sembolü bulunamıyor: class Hesap Makinesi konumu: class com.qwertovsky.helloworld.HelloWorld Hesap Makinesi calc=yeni Hesap Makinesi(); ^2 hata
Hata, derlemenin kullanılan sınıfların (Calculator sınıfı) kaynak kodlarına sahip dosyalar gerektirmesi nedeniyle ortaya çıktı. -sourcepath anahtarını kullanarak derleyiciye dosyaları içeren dizini belirtmelisiniz.
derleme
javac -sourcepath ./src -d bin src/com/qwertovsky/helloworld/HelloWorld.java
fırlatıyoruz
java -classpath ./bin com.qwertovsky.helloworld.HelloWorld Hello Word 2+3=5

Sonuç sizi şaşırttıysa

Bir hata ayıklayıcı başlatmak mümkündür. jdb bunun için var.
İlk olarak -g anahtarı ile derliyoruz ki hata ayıklayıcı bilgi sahibi olsun.
javac -g -sourcepath ./src -d bin src/com/qwertovsky/helloworld/HelloWorld.java
Hata ayıklayıcıyı başlatma
jdb -classpath bin -sourcepath src com.qwertovsky.helloworld.HelloWorld jdb başlatılıyor ... >
Hata ayıklayıcı, komutları girmek için dahili terminalini başlatır. İkincisiyle ilgili yardım, help komutu kullanılarak görüntülenebilir.
Calculator sınıfında 9. satırda bir kesme noktası ayarlayın
> com.qwertovsky.helloworld.Calculator:9'da durun. Kesme noktasının ertelenmesi com.qwertovsky.helloworld.Calculator:9. Sınıf yüklendikten sonra ayarlanacaktır.
Yürütmek için başlatıyoruz.
> run run com.qwertovsky.helloworld.HelloWorld Yakalanmamış java.lang.Throwable ayarla Ertelenmiş yakalanmamış java.lang.Throwable ayarla > VM Başlatıldı: Ertelenmiş kesme noktası ayarla com.qwertovsky.helloworld.Calculator:9 Merhaba Dünya! Kesme noktası isabeti: "thread=main", com.qwertovsky.helloworld.Calculator.sum(), line=9 bci=0 9 Adder adder=new Adder();
Yönlendirilmek için bir parça görüntüleyebilirsiniz. kaynak kodu imlecin şu anda bulunduğu yer.
main list 5 public class Hesap Makinesi 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 dönüş adder.getSum();
a değişkeninin ne olduğunu bulalım.
main print a a = int örneği (id=340) main dump a a = ( 2, 3 ) com.qwertovsky.helloworld.operation.Adder:19 adresindeki ana durak com.qwertovsky.helloworld.operation.Adder:19 kesme noktasının ertelenmesi. Sınıf yüklendikten sonra ayarlanacaktır.
Yürütmeye devam edelim.
ana devam > Ertelenmiş kesme noktası ayarla com.qwertovsky.helloworld.operation.Adder:19 Kesme noktası isabeti: "thread=main", com.qwertovsky.helloworld.operation.Adder.add(), line=19 bci=0 19 toplam+=b ; ana liste 15 ) 16 17 public void add(int b) 18 ( 19 => toplam+=b; 20 ) 21 22 public int getSum() 23 ( 24 dönüş toplamı; ana baskı toplamı = 0 ana baskı b b = 2
içinde kodu çalıştıralım geçerli satır ve toplamın 2'ye eşit olduğunu göreceğiz.
ana adım > Tamamlanan adım: "thread=main", com.qwertovsky.helloworld.operation.Adder.add(), line=20 bci=10 20 ) ana baskı toplamı = 2
Adder sınıfından onu çağıran Calculator sınıfına yükselelim.
ana adım yukarı > Tamamlanan adım: "thread=main", com.qwertovsky.helloworld.Calculator.sum(), line=10 bci=36 10 for(int i:a)
Bir kesme noktasının kaldırılması
main clear com.qwertovsky.helloworld.operation.Adder:19 Kaldırıldı: breakpoint com.qwertovsky.helloworld.operation.Adder:19 ana adım > Tamamlanan adım: "thread=main", com.qwertovsky.helloworld.Calculator.sum() , satır=12 bci=30 12 adder.add(i);
Sonraki komutu kullanarak yöntemlere girmekten kaçınabilirsiniz.
main next > Tamamlanan Adım: "thread=main", com.qwertovsky.helloworld.Calculator.sum(), line=10 bci=36 10 for(int i:a) main next > Tamamlanan Adım: "thread=main", com.qwertovsky.helloworld.Calculator.sum(), satır=14 bci=42 14 dönüş adder.getSum();
İfadenin değerini kontrol edip yürütmeyi tamamlıyoruz.
ana değerlendirme adder.getSum() adder.getSum() = 5 ana devam > 2+3=5 Uygulamadan çıkıldı

test etmek güzel olurdu

JUnit kullanıyoruz.
paket com.qwertovsky.helloworld; statik org.junit.Assert.* dosyasını içe aktarın; java.util.Arrays'i içe aktarın; java.util.Collection'ı içe aktarın; org.junit.Test'i içe aktar; org.junit.runner.RunWith'i içe aktarın; org.junit.runners.Parameterized.Parameters'ı içe aktarın; @RunWith(value=org.junit.runners.Parameterized.class) genel sınıf TestCalculator ( int bekleniyor; int arg; @Parameters genel statik Koleksiyon parametreler() ( dönüş Arrays.asList(yeni int(((4), (2, 2)) ,((-1),(4, -5)) ,((0),(0,0,0) ) ,((0),()) )); ) public TestCalculator(int bekleniyor, int arg) ( this.expected=beklenen; this.arg=arg; ) @Test public void testSum() ( Hesap Makinesi c=yeni Hesap Makinesi (); assertEquals(beklenen,c.sum(arg)); ) )
derleme
mkdir test_bin javac -classpath lib/path/junit-4.8.2.jar -sourcepath ./src -d test_bin test/com/qwertovsky/helloworld/TestCalculator.java
Fırlatıyoruz. Windows'ta sınıf yolu ayırıcısı ";", Linux'ta ":" şeklindedir. Her iki sınırlayıcı da Cygwin konsolunda çalışmıyor. Belki ";" çalışması gerekir, ancak komut ayırıcı olarak değerlendirilir.
java -classpath lib/path/junit-4.8.2.jar:./test_bin org.junit.runner.JUnitCore com.qwertovsky.helloworld.TestCalculator JUnit sürüm 4.8.2 .... Süre: 0.031 Tamam (4 test)

bir kitaplık oluşturalım

Calculator sınıfının faydalı olduğu kanıtlanmıştır ve birçok projede kullanılabilir. Calculator sınıfı ile ilgili her şeyi ayrı bir projeye taşıyalım.
HelloWorld "---bin "---src "---com "---qwertovsky "---helloworld "---HelloWorld.java Hesap Makinesi "---bin "---src ""---com " "---qwertovsky " "---hesap makinesi " "---Calculator.java " "---operasyon " "---Adder.java "---test "---com "---qwertovsky " ---hesap makinesi "---TestCalculator.java
Kaynaklardaki paket adlarını da değiştirin. HelloWorld.java satırı eklemeniz gerekecek
com.qwertovsky.calculator.Calculator'ı içe aktarın;
Derleme.
cd Hesap Makinesi javac -sourcepath src -d bin src/com/qwertovsky/calculator/Calculator.java
kavanoz arşivi yapmak
jar cvf hesaplayıcı.jar -C bin . eklenen manifest ekleme: com/(in = 0) (out= 0)(%0 depolandı) ekleme: com/qwertovsky/(in = 0) (out= 0)(%0 depolandı) ekleme: com/qwertovsky/calculator/ (in = 0) (out= 0)(%0 depolanır) ekleme: com/qwertovsky/calculator/Calculator.class(in = 497) (out= 373)(sönük %24) ekleme: com/qwertovsky/calculator/operasyon /(in = 0) (out= 0)(%0 depolanır) ekleme: com/qwertovsky/calculator/operation/Adder.class(in = 441) (out= 299(sönük %32)
-C anahtarını kullanarak programı bin dizininde başlattık.

Kütüphanenin içinde ne olduğunu bulmalıyız.

Arşivi bir zip-unpacker ile açabilir ve kütüphanede hangi sınıfların olduğunu görebilirsiniz.
Herhangi bir sınıf hakkında bilgi javap disassembler kullanılarak elde edilebilir.
javap -c -classpath calculator.jar com.qwertovsky.calculator.Calculator "Calculator.java"dan derlenmiştir public class com.qwertovsky.calculator.Calculator java.lang.Object( public com.qwertovsky.calculator.Calculator(); Code'u genişletir : 0: aload_0 1: invokespecial #1; //Yöntem Java/lang/Object." ":()V 4: public int sum(int); Kod: 0: yeni #2; //class com/qwertovsky/hesap makinesi/operasyon/Adder 3: dup 4: invokespecial #3; //Method com/qwertovsky /hesap makinesi/işlem/Toplayıcı." ":()V 7: astore_2 8: aload_1 9: astore_3 10: aload_3 11: dizi uzunluğu 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; //Metot com/qwertovsky/hesaplayıcı/operasyon/Adder.add:(I)V 36: iinc 5, 1 39: git 17 42 : aload_2 43: invokevirtual #5 //Method com/qwertovsky/calculator/operation/Adder.getSum:()I 46: ireturn )
Sınıfın, boş kurucuya ek olarak, içinde Adder sınıfının add yönteminin bir döngü içinde çağrıldığı başka bir toplama yöntemini içerdiği sonuçtan görülebilir. Toplam yöntemi tamamlandığında Adder.getSum() çağrılır.
-c anahtarı olmadan, program yalnızca değişkenlerin ve yöntemlerin bir listesini verir (-private kullanıyorsanız, tümü).
javap -private -classpath hesaplayıcı.jar com.qwertovsky.calculator.operation.Adder "Adder.java"dan derlenmiştir genel sınıf com.qwertovsky.calculator.operation.Adder, Java.lang.Object( private int sum; public com.qwertovsky) öğesini genişletir .calculator.operation.Adder(); public com.qwertovsky.calculator.operation.Adder(int); public void add(int); public int getSum(); )

Kitaplığı belgelemek daha iyidir

Bunun için hesap makinesi sınıfını değiştirelim.
paket com.qwertovsky.hesap makinesi; com.qwertovsky.calculator.operation.Adder'ı içe aktarın; /** * Ekleyebilen Hesap Makinesi * @author Qwertovsky * */ public class Hesap Makinesi ( /** * Terimlerin toplamını belirleyin * @param bir terim dizisi * @return sum */ public int sum(int... a ) ( Adder adder=new Adder(); for(int i:a) ( adder.add(i); ) return adder.getSum(); ) )
Aşağıdaki komut ile döküman oluşturulabilir. Bir hata oluşursa, program olası seçeneklerin bir listesini görüntüler.
mkdir belgesi javadoc -d doc -charset utf-8 -sourcepath src -yazar -alt paketler com.qwertovsky.calculator
Sonuç aşağıdaki olacak

jar arşivi imzalanabilir

Kütüphanenizi dijital imza ile imzalamanız gerekiyorsa, keytool ve jarsigner imdadınıza yetişecektir.
Bir imza oluşturuyoruz.
keytool -genkey -keyalg rsa -keysize 2048 -alias qwertokey -keystore path/to/qwerto.keystore Anahtar deposu parolasını girin: Yeni parolayı yeniden girin: Adınız ve soyadınız nedir? : Valery Qwertovsky Organizasyon biriminizin adı nedir? : Qwertovsky Kuruluşunuzun adı nedir? : Qwertovsky Şehrinizin veya Bulunduğunuz Yerin adı nedir? : Tver Eyaletinizin veya İlinizin adı nedir? : Tverskaya obl. iki harfli ülke nedir için kod bu ünite? : RU CN=Valery Qwertovsky, OU=Qwertovsky, O=Qwertovsky, L=Tver, ST=Tverskaya obl., C=RU doğru mu? : y Anahtar parolasını girin (Anahtar deposu şifresi ile aynı ise GERİ DÖN): Yeni şifreyi tekrar girin:
Sertifika İmzalama Talebi (CSR) Oluşturma
keytool -certreq -file path/to/qwertokey.crt -alias qwertokey -keystore path/to/qwerto.keystore
Alınan dosyanın içeriğini sertifika yetkilisine göndeririz. Sertifika yetkilisinden bir sertifika alıyoruz. Bir dosyaya (örneğin, qwertokey.cer) kaydeder ve depoya aktarırız.
keytool -import -trustcacerts -keystore path/to/qwert.keystore -alias qwertokey -file path/to/qwertokey.cer
Kavanoz arşivini imzalama
jarsigner -keystore path/to/qwerto.keystore hesap makinesi.jar qwertokey
Arşive bakmak isteyen herkese qwertokey.cer dosyasını gönderiyoruz. Bu şekilde kontrol edilir
jarsigner -verify -verbose -certs -keystore path/to/qwerto.keystore hesap makinesi.jar

Kitaplığı Kullanma

Calculator library sınıfını kullanan bir HelloWorld programı var. Programı derlemek ve çalıştırmak için kütüphaneyi dahil etmeniz gerekir.
derleme
cd HelloWorld javac -sourcepath src -d bin -classpath path/to/calculator.jar src/com/qwertovsky/helloworld/HelloWorld.java
fırlatıyoruz
java -classpath bin:path/to/calculator.jar com.qwertovsky.helloworld.HelloWorld

Programı bir araya getirmek

Bu farklı şekillerde yapılabilir.

ilk yol

cd HelloWorld echo ana sınıfı: com.qwertovsky.helloworld.HelloWorld>manifest.mf yankı sınıf yolu: lib/calculator.jar >>manifest.mf mkdir lib cp path/to/calculator.jar lib/calculator.jar jar - cmf manifest.mf merhabaworld.jar -C bin .
Burada incelikler var.
Çizgide
ana sınıf: com.qwertovsky.helloworld.HelloWorld
sonunda boşluk olmamalıdır.
İkinci incelik şurada açıklanmıştır: aynı satırda Sonraki satır. Bu, bildirimin bir üçüncü taraf arşivleyici tarafından arşivlenmesi durumunda geçerlidir.
jar programı bildirime dahil olmayacak son satır sonunda satır sonu yoksa, bildirimden.
Başka bir nokta: manifestoda olmamalıdır boş satırlar satırlar arasında. "Java.io.IOException: geçersiz bildirim biçimi" hatası verilir.

echo komutunu kullanırken, yalnızca ana sınıf satırının sonundaki boşluğu izlemeniz gerekir.

ikinci yol

cd HelloWorld eko sınıf yolu: lib/calculator.jar >manifest.mf mkdir lib cp path/to/calculator.jar lib/calculator.jar jar -cmef manifest.mf com.qwertovsky.helloworld.HelloWorld merhabaworld.jar -C bin .
İÇİNDE Bu method ana sınıfta boşluk hatasından kaçının.

Üçüncü yol

cd HelloWorld mkdir lib cd lib jar -xvf path/to/calculator.jar com/ oluşturuldu: com/ oluşturuldu: com/qwertovsky/ oluşturuldu: com/qwertovsky/calculator/ şişirildi: com/qwertovsky/calculator/Calculator.class oluşturuldu: com /qwertovsky/hesaplayıcı/operasyon/ şişirilmiş: com/qwertovsky/calculator/operation/Adder.class cd .. cp -r bin/* lib/ jar -cef com.qwertovsky.helloworld.HelloWorld merhabaworld.jar -C lib . rm -r lib
Gerekli kitaplığın kodunu dahil etti çalıştırılabilir dosya.

Yürütülebilir jar dosyasını çalıştırma

Calculator.jar dosyası yürütülebilir değil. Ancak merhabaworld.jar çalıştırılabilir.
Arşiv ilk iki şekilde oluşturulduysa, aynı dizinde yanında hesap makinesi.jar dosyasının bulunduğu bir lib klasörü olmalıdır. Bu tür kısıtlamalar, yürütülebilir dosyaya göre yolun bildirimdeki sınıf yolunda belirtilmesinden kaynaklanmaktadır.
cd Hesap Makinesi ls ../HelloWorld/lib hesap makinesi.jar java kavanozu../HelloWorld/helloworld.jar
Üçüncü yöntemi kullanırken gerekli kütüphaneler yürütülebilir dosyaya dahil edilmiştir. Gerekli kütüphaneleri yakınınızda tutmanıza gerek yoktur. Aynı şekilde çalışır.
java -jar ../HelloWorld/helloworld.jar

JavaEE uygulamalarıyla nasıl başa çıkılır?

Aynı şekilde. Kullanılan uygulama sunucusundan yalnızca derleme için kitaplıkların alınması gerekir. JBoss kullanıyorsam, sunucu uygulamasını derlemek için böyle bir şey yapmam gerekir
javac -classpath path/to/jboss/common/lib/jboss-servlet*.jar -d ./classes src/com/qwertovsky/app/servlets/MenuSt.java
JavaEE uygulama arşivinin yapısı belirli bir formatı takip etmelidir. Örneğin
my.ear `---META-INF | `---manifest.mf `---lib | `--mylib.jar `---my.war | `---META-INF | | `---manifest.mf | `---WEB-INF | | `--lib | | | `---myweblib.jar | | `---sınıflar | | | `---com | | | `---... | | `---web.xml | `---index.html | `---<остальное веб-содержимое (страницы, изображения)>`--myejb.jar
Uygulamayı sunucunun kendisinde komut satırını kullanarak çalıştırmanın yolu her sunucu için farklıdır.

Umarım bu makale birisi için komut satırında Java ile çalışmak için bir hile sayfası olur. Bu beceriler, Ant komut dosyalarının içeriğini ve anlamını anlamanıza ve "Hangi IDE'yi en çok beğendiniz?" sorusundan daha zorlu mülakat sorularını yanıtlamanıza yardımcı olacaktır.

Artık kimse konsolda program oluşturmuyor. En sevdiğiniz IDE'yi kullanan geliştirici, olmadığı yerde başka birinin bilgisayarında rahatsız olur.
Ant ve Maven'in çalışmalarını anlamaya karar vererek, konsolda onlarsız uygulamayı oluşturamadığımı fark ettim.
Bu yazımda, internette her komut için yardım aramamak için bir demo uygulaması tasarlamanın tüm aşamalarını sığdırmaya çalıştım.

Basitten ...

Her program genellikle ayrı bir dizinde bulunur. Benim kuralım bu dizinde en az iki klasör oluşturmak: src ve bin. Birincisi kaynak kodlarını, ikincisi - derlemenin sonucunu içerir. Bu klasörler paketlere bağlı olarak bir dizin yapısına sahip olacaktır.

bir dosya

Ekstra klasörler olmadan yapabilirsiniz.
HelloWorld.java dosyasının kendisini alıyoruz. public class HelloWorld ( public static void main(String args) ( System.out.println("Merhaba Dünya!"); ) )
Bu dosyanın bulunduğu dizine gidin ve komutları çalıştırın.
javac HelloWorld.java HelloWorld.class dosyası bu klasörde görünecektir. Böylece program derlenir. başlatmak için
java -sınıf yolu . Selam Dünya

İkili dosyaları kaynaklardan ayırma

Şimdi aynısını yapacağız, ancak dizinlerle. İçinde src ve bin klasörleri bulunan bir HelloWorld dizini oluşturalım.
derleme
javac -d bin src/HelloWorld.java Burada ikili dosyaların ayrı bir bin klasörüne kaydedileceğini ve kaynaklarla karıştırılmamasını belirtmiştik.

fırlatıyoruz
java -classpath ./bin HelloWorld

paketleri kullanıyoruz

Ve sonra birdenbire program sadece HelloWorld olmaktan çıkacak. Paketlere en iyi şekilde anlamlı ve benzersiz bir ad verilir. Bu, bu programı ad çakışması olmadan başka bir projeye eklemenize olanak tanır. Bazı makaleleri okuduktan sonra, paket adının mutlaka bir etki alanına ihtiyacı olduğunu düşünebilirsiniz. Bu doğru değil. Etki alanları, benzersizliğe ulaşmanın uygun bir yoludur. Kendi alan adınız yoksa, sitede bir hesap kullanın (örneğin, ru.habrahabr.mylogin). Eşsiz olacak. Paket adlarının küçük harf olması gerektiğini lütfen unutmayın. Ve özel karakterler kullanmaktan kaçının. Farklı platformlar ve dosya sistemleri nedeniyle sorunlar ortaya çıkıyor.

Sınıfımızı com.qwertovsky.helloworld adlı bir pakete yerleştirelim. Bunu yapmak için dosyanın başına bir satır ekleyin.
paket com.qwertovsky.helloworld; Dosyanın yolu şöyle görünecek şekilde src dizininde ek dizinler oluşturalım: src/com/qwertovsky/helloworld/HelloWorld.java.
derleme
javac -d bin src/com/qwertovsky/helloworld/HelloWorld.java Bin dizini otomatik olarak src'ye benzer bir dizin yapısına sahip olacaktır.
HelloWorld "---bin " "---com " "---qwertovsky " "---helloworld " "---HelloWorld.class "---src "---com "---qwertovsky "-- -helloworld "---HelloWorld.java
fırlatıyoruz
java -classpath ./bin com.qwertovsky.helloworld.HelloWorld

Programda birden fazla dosya varsa

Programı değiştirelim.
MerhabaDünya.java
paket 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("Merhaba Dünya!"); System.out.println( a+"+"+b+"="+calc.sum(a,b)); ) )
Calculator.java
paket com.qwertovsky.helloworld; com.qwertovsky.helloworld.operation.Adder'ı içe aktarın; public class Hesap Makinesi ( public int sum(int... a) ( Adder adder=new Adder(); for(int i:a) ( adder.add(i); ) return adder.getSum(); ) )
Adder.java
paket com.qwertovsky.helloworld.operasyon; public class Toplayıcı ( private int toplam; public Adder() ( sum=0; ) public Adder(int a) ( this.sum=a; ) public void add(int b) ( sum+=b; ) public int getSum() ( dönüş toplamı; ) )
derleme
javac -d bin src/com/qwertovsky/helloworld/HelloWorld.java src\com\qwertovsky\helloworld\HelloWorld.java:9: sembol sembolü bulunamıyor: class Hesap makinesi konumu: class com.qwertovsky.helloworld.HelloWorld Hesap Makinesi calc=new hesap makinesi(); ^ src\com\qwertovsky\helloworld\HelloWorld.java:9: sembol sembolü bulunamıyor: class Hesap Makinesi konumu: class com.qwertovsky.helloworld.HelloWorld Hesap Makinesi calc=yeni Hesap Makinesi(); ^2 hata
Hata, derlemenin kullanılan sınıfların (Calculator sınıfı) kaynak kodlarına sahip dosyalar gerektirmesi nedeniyle ortaya çıktı. -sourcepath anahtarını kullanarak derleyiciye dosyaları içeren dizini belirtmelisiniz.
derleme
javac -sourcepath ./src -d bin src/com/qwertovsky/helloworld/HelloWorld.java
fırlatıyoruz
java -classpath ./bin com.qwertovsky.helloworld.HelloWorld Hello Word 2+3=5

Sonuç sizi şaşırttıysa

Bir hata ayıklayıcı başlatmak mümkündür. jdb bunun için var.
İlk olarak -g anahtarı ile derliyoruz ki hata ayıklayıcı bilgi sahibi olsun.
javac -g -sourcepath ./src -d bin src/com/qwertovsky/helloworld/HelloWorld.java
Hata ayıklayıcıyı başlatma
jdb -classpath bin -sourcepath src com.qwertovsky.helloworld.HelloWorld jdb başlatılıyor ... >
Hata ayıklayıcı, komutları girmek için dahili terminalini başlatır. İkincisiyle ilgili yardım, help komutu kullanılarak görüntülenebilir.
Calculator sınıfında 9. satırda bir kesme noktası ayarlayın
> com.qwertovsky.helloworld.Calculator:9'da durun. Kesme noktasının ertelenmesi com.qwertovsky.helloworld.Calculator:9. Sınıf yüklendikten sonra ayarlanacaktır.
Yürütmek için başlatıyoruz.
> run run com.qwertovsky.helloworld.HelloWorld Yakalanmamış java.lang.Throwable ayarla Ertelenmiş yakalanmamış java.lang.Throwable ayarla > VM Başlatıldı: Ertelenmiş kesme noktası ayarla com.qwertovsky.helloworld.Calculator:9 Merhaba Dünya! Kesme noktası isabeti: "thread=main", com.qwertovsky.helloworld.Calculator.sum(), line=9 bci=0 9 Adder adder=new Adder();
Yönünüzü bulmak için, imlecin bulunduğu yerde kaynak kodun bir parçasını görüntüleyebilirsiniz.
main list 5 public class Hesap Makinesi 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 dönüş adder.getSum();
a değişkeninin ne olduğunu bulalım.
main print a a = int örneği (id=340) main dump a a = ( 2, 3 ) com.qwertovsky.helloworld.operation.Adder:19 adresindeki ana durak com.qwertovsky.helloworld.operation.Adder:19 kesme noktasının ertelenmesi. Sınıf yüklendikten sonra ayarlanacaktır.
Yürütmeye devam edelim.
ana devam > Ertelenmiş kesme noktası ayarla com.qwertovsky.helloworld.operation.Adder:19 Kesme noktası isabeti: "thread=main", com.qwertovsky.helloworld.operation.Adder.add(), line=19 bci=0 19 toplam+=b ; ana liste 15 ) 16 17 public void add(int b) 18 ( 19 => toplam+=b; 20 ) 21 22 public int getSum() 23 ( 24 dönüş toplamı; ana baskı toplamı = 0 ana baskı b b = 2
Kodu mevcut satırda çalıştıralım ve toplamın 2'ye eşit olduğunu görelim.
ana adım > Tamamlanan adım: "thread=main", com.qwertovsky.helloworld.operation.Adder.add(), line=20 bci=10 20 ) ana baskı toplamı = 2
Adder sınıfından onu çağıran Calculator sınıfına yükselelim.
ana adım yukarı > Tamamlanan adım: "thread=main", com.qwertovsky.helloworld.Calculator.sum(), line=10 bci=36 10 for(int i:a)
Bir kesme noktasının kaldırılması
main clear com.qwertovsky.helloworld.operation.Adder:19 Kaldırıldı: breakpoint com.qwertovsky.helloworld.operation.Adder:19 ana adım > Tamamlanan adım: "thread=main", com.qwertovsky.helloworld.Calculator.sum() , satır=12 bci=30 12 adder.add(i);
Sonraki komutu kullanarak yöntemlere girmekten kaçınabilirsiniz.
main next > Tamamlanan Adım: "thread=main", com.qwertovsky.helloworld.Calculator.sum(), line=10 bci=36 10 for(int i:a) main next > Tamamlanan Adım: "thread=main", com.qwertovsky.helloworld.Calculator.sum(), satır=14 bci=42 14 dönüş adder.getSum();
İfadenin değerini kontrol edip yürütmeyi tamamlıyoruz.
ana değerlendirme adder.getSum() adder.getSum() = 5 ana devam > 2+3=5 Uygulamadan çıkıldı

test etmek güzel olurdu

JUnit kullanıyoruz.
paket com.qwertovsky.helloworld; statik org.junit.Assert.* dosyasını içe aktarın; java.util.Arrays'i içe aktarın; java.util.Collection'ı içe aktarın; org.junit.Test'i içe aktar; org.junit.runner.RunWith'i içe aktarın; org.junit.runners.Parameterized.Parameters'ı içe aktarın; @RunWith(value=org.junit.runners.Parameterized.class) genel sınıf TestCalculator ( int bekleniyor; int arg; @Parameters genel statik Koleksiyon parametreler() ( dönüş Arrays.asList(yeni int(((4), (2, 2)) ,((-1),(4, -5)) ,((0),(0,0,0) ) ,((0),()) )); ) public TestCalculator(int bekleniyor, int arg) ( this.expected=beklenen; this.arg=arg; ) @Test public void testSum() ( Hesap Makinesi c=yeni Hesap Makinesi (); assertEquals(beklenen,c.sum(arg)); ) )
derleme
mkdir test_bin javac -classpath lib/path/junit-4.8.2.jar -sourcepath ./src -d test_bin test/com/qwertovsky/helloworld/TestCalculator.java
Fırlatıyoruz. Windows'ta sınıf yolu ayırıcısı ";", Linux'ta ":" şeklindedir. Her iki sınırlayıcı da Cygwin konsolunda çalışmıyor. Belki ";" çalışması gerekir, ancak komut ayırıcı olarak değerlendirilir.
java -classpath lib/path/junit-4.8.2.jar:./test_bin org.junit.runner.JUnitCore com.qwertovsky.helloworld.TestCalculator JUnit sürüm 4.8.2 .... Süre: 0.031 Tamam (4 test)

bir kitaplık oluşturalım

Calculator sınıfının faydalı olduğu kanıtlanmıştır ve birçok projede kullanılabilir. Calculator sınıfı ile ilgili her şeyi ayrı bir projeye taşıyalım.
HelloWorld "---bin "---src "---com "---qwertovsky "---helloworld "---HelloWorld.java Hesap Makinesi "---bin "---src ""---com " "---qwertovsky " "---hesap makinesi " "---Calculator.java " "---operasyon " "---Adder.java "---test "---com "---qwertovsky " ---hesap makinesi "---TestCalculator.java
Kaynaklardaki paket adlarını da değiştirin. HelloWorld.java satırı eklemeniz gerekecek
com.qwertovsky.calculator.Calculator'ı içe aktarın;
Derleme.
cd Hesap Makinesi javac -sourcepath src -d bin src/com/qwertovsky/calculator/Calculator.java
kavanoz arşivi yapmak
jar cvf hesaplayıcı.jar -C bin . eklenen manifest ekleme: com/(in = 0) (out= 0)(%0 depolandı) ekleme: com/qwertovsky/(in = 0) (out= 0)(%0 depolandı) ekleme: com/qwertovsky/calculator/ (in = 0) (out= 0)(%0 depolanır) ekleme: com/qwertovsky/calculator/Calculator.class(in = 497) (out= 373)(sönük %24) ekleme: com/qwertovsky/calculator/operasyon /(in = 0) (out= 0)(%0 depolanır) ekleme: com/qwertovsky/calculator/operation/Adder.class(in = 441) (out= 299(sönük %32)
-C anahtarını kullanarak programı bin dizininde başlattık.

Kütüphanenin içinde ne olduğunu bulmalıyız.

Arşivi bir zip-unpacker ile açabilir ve kütüphanede hangi sınıfların olduğunu görebilirsiniz.
Herhangi bir sınıf hakkında bilgi javap disassembler kullanılarak elde edilebilir.
javap -c -classpath calculator.jar com.qwertovsky.calculator.Calculator "Calculator.java"dan derlenmiştir public class com.qwertovsky.calculator.Calculator java.lang.Object( public com.qwertovsky.calculator.Calculator(); Code'u genişletir : 0: aload_0 1: invokespecial #1; //Yöntem Java/lang/Object." ":()V 4: public int sum(int); Kod: 0: yeni #2; //class com/qwertovsky/hesap makinesi/operasyon/Adder 3: dup 4: invokespecial #3; //Method com/qwertovsky /hesap makinesi/işlem/Toplayıcı." ":()V 7: astore_2 8: aload_1 9: astore_3 10: aload_3 11: dizi uzunluğu 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; //Metot com/qwertovsky/hesaplayıcı/operasyon/Adder.add:(I)V 36: iinc 5, 1 39: git 17 42 : aload_2 43: invokevirtual #5 //Method com/qwertovsky/calculator/operation/Adder.getSum:()I 46: ireturn )
Sınıfın, boş kurucuya ek olarak, içinde Adder sınıfının add yönteminin bir döngü içinde çağrıldığı başka bir toplama yöntemini içerdiği sonuçtan görülebilir. Toplam yöntemi tamamlandığında Adder.getSum() çağrılır.
-c anahtarı olmadan, program yalnızca değişkenlerin ve yöntemlerin bir listesini verir (-private kullanıyorsanız, tümü).
javap -private -classpath hesaplayıcı.jar com.qwertovsky.calculator.operation.Adder "Adder.java"dan derlenmiştir genel sınıf com.qwertovsky.calculator.operation.Adder, Java.lang.Object( private int sum; public com.qwertovsky) öğesini genişletir .calculator.operation.Adder(); public com.qwertovsky.calculator.operation.Adder(int); public void add(int); public int getSum(); )

Kitaplığı belgelemek daha iyidir

Bunun için hesap makinesi sınıfını değiştirelim.
paket com.qwertovsky.hesap makinesi; com.qwertovsky.calculator.operation.Adder'ı içe aktarın; /** * Ekleyebilen Hesap Makinesi * @author Qwertovsky * */ public class Hesap Makinesi ( /** * Terimlerin toplamını belirleyin * @param bir terim dizisi * @return sum */ public int sum(int... a ) ( Adder adder=new Adder(); for(int i:a) ( adder.add(i); ) return adder.getSum(); ) )
Aşağıdaki komut ile döküman oluşturulabilir. Bir hata oluşursa, program olası seçeneklerin bir listesini görüntüler.
mkdir belgesi javadoc -d doc -charset utf-8 -sourcepath src -yazar -alt paketler com.qwertovsky.calculator
Sonuç aşağıdaki olacak

jar arşivi imzalanabilir

Kütüphanenizi dijital imza ile imzalamanız gerekiyorsa, keytool ve jarsigner imdadınıza yetişecektir.
Bir imza oluşturuyoruz.
keytool -genkey -keyalg rsa -keysize 2048 -alias qwertokey -keystore path/to/qwerto.keystore Anahtar deposu parolasını girin: Yeni parolayı yeniden girin: Adınız ve soyadınız nedir? : Valery Qwertovsky Organizasyon biriminizin adı nedir? : Qwertovsky Kuruluşunuzun adı nedir? : Qwertovsky Şehrinizin veya Bulunduğunuz Yerin adı nedir? : Tver Eyaletinizin veya İlinizin adı nedir? : Tverskaya obl. Bu birim için iki harfli ülke kodu nedir? : RU CN=Valery Qwertovsky, OU=Qwertovsky, O=Qwertovsky, L=Tver, ST=Tverskaya obl., C=RU doğru mu? : y Anahtar parolasını girin (Anahtar deposu şifresi ile aynı ise GERİ DÖN): Yeni şifreyi tekrar girin:
Sertifika İmzalama Talebi (CSR) Oluşturma
keytool -certreq -file path/to/qwertokey.crt -alias qwertokey -keystore path/to/qwerto.keystore
Alınan dosyanın içeriğini sertifika yetkilisine göndeririz. Sertifika yetkilisinden bir sertifika alıyoruz. Bir dosyaya (örneğin, qwertokey.cer) kaydeder ve depoya aktarırız.
keytool -import -trustcacerts -keystore path/to/qwert.keystore -alias qwertokey -file path/to/qwertokey.cer
Kavanoz arşivini imzalama
jarsigner -keystore path/to/qwerto.keystore hesap makinesi.jar qwertokey
Arşive bakmak isteyen herkese qwertokey.cer dosyasını gönderiyoruz. Bu şekilde kontrol edilir
jarsigner -verify -verbose -certs -keystore path/to/qwerto.keystore hesap makinesi.jar

Kitaplığı Kullanma

Calculator library sınıfını kullanan bir HelloWorld programı var. Programı derlemek ve çalıştırmak için kütüphaneyi dahil etmeniz gerekir.
derleme
cd HelloWorld javac -sourcepath src -d bin -classpath path/to/calculator.jar src/com/qwertovsky/helloworld/HelloWorld.java
fırlatıyoruz
java -classpath bin:path/to/calculator.jar com.qwertovsky.helloworld.HelloWorld

Programı bir araya getirmek

Bu farklı şekillerde yapılabilir.

ilk yol

cd HelloWorld echo ana sınıfı: com.qwertovsky.helloworld.HelloWorld>manifest.mf yankı sınıf yolu: lib/calculator.jar >>manifest.mf mkdir lib cp path/to/calculator.jar lib/calculator.jar jar - cmf manifest.mf merhabaworld.jar -C bin .
Burada incelikler var.
Çizgide
ana sınıf: com.qwertovsky.helloworld.HelloWorld
sonunda boşluk olmamalıdır.
İkinci incelik şurada açıklanmıştır: aynı satırda bir sonraki satıra aktarma olmalıdır. Bu, bildirimin bir üçüncü taraf arşivleyici tarafından arşivlenmesi durumunda geçerlidir.
Jar programı, sonunda bir satır sonu olmadıkça, bildirimdeki son satırı içermez.
Başka bir nokta: Manifest'te satırlar arasında boş satırlar olmamalıdır. "Java.io.IOException: geçersiz bildirim biçimi" hatası verilir.

echo komutunu kullanırken, yalnızca ana sınıf satırının sonundaki boşluğu izlemeniz gerekir.

ikinci yol

cd HelloWorld eko sınıf yolu: lib/calculator.jar >manifest.mf mkdir lib cp path/to/calculator.jar lib/calculator.jar jar -cmef manifest.mf com.qwertovsky.helloworld.HelloWorld merhabaworld.jar -C bin .
Bu şekilde main-class'ta boşluk bırakan hatayı önlemiş oluyoruz.

Üçüncü yol

cd HelloWorld mkdir lib cd lib jar -xvf path/to/calculator.jar com/ oluşturuldu: com/ oluşturuldu: com/qwertovsky/ oluşturuldu: com/qwertovsky/calculator/ şişirildi: com/qwertovsky/calculator/Calculator.class oluşturuldu: com /qwertovsky/hesaplayıcı/operasyon/ şişirilmiş: com/qwertovsky/calculator/operation/Adder.class cd .. cp -r bin/* lib/ jar -cef com.qwertovsky.helloworld.HelloWorld merhabaworld.jar -C lib . rm -r lib
Yürütülebilir dosyaya gerekli kitaplığın kodunu dahil etti.

Yürütülebilir jar dosyasını çalıştırma

Calculator.jar dosyası yürütülebilir değil. Ancak merhabaworld.jar çalıştırılabilir.
Arşiv ilk iki şekilde oluşturulduysa, aynı dizinde yanında hesap makinesi.jar dosyasının bulunduğu bir lib klasörü olmalıdır. Bu tür kısıtlamalar, yürütülebilir dosyaya göre yolun bildirimdeki sınıf yolunda belirtilmesinden kaynaklanmaktadır.
cd Hesap Makinesi ls ../HelloWorld/lib hesaplayıcı.jar java -jar ../HelloWorld/helloworld.jar
Üçüncü yöntemi kullanırken, gerekli kitaplıklar yürütülebilir dosyaya dahil edilir. Gerekli kütüphaneleri yakınınızda tutmanıza gerek yoktur. Aynı şekilde çalışır.
java -jar ../HelloWorld/helloworld.jar

JavaEE uygulamalarıyla nasıl başa çıkılır?

Aynı şekilde. Kullanılan uygulama sunucusundan yalnızca derleme için kitaplıkların alınması gerekir. JBoss kullanıyorsam, sunucu uygulamasını derlemek için böyle bir şey yapmam gerekir
javac -classpath path/to/jboss/common/lib/jboss-servlet*.jar -d ./classes src/com/qwertovsky/app/servlets/MenuSt.java
JavaEE uygulama arşivinin yapısı belirli bir formatı takip etmelidir. Örneğin
my.ear `---META-INF | `---manifest.mf `---lib | `--mylib.jar `---my.war | `---META-INF | | `---manifest.mf | `---WEB-INF | | `--lib | | | `---myweblib.jar | | `---sınıflar | | | `---com | | | `---... | | `---web.xml | `---index.html | `---<остальное веб-содержимое (страницы, изображения)>`--myejb.jar
Uygulamayı sunucunun kendisinde komut satırını kullanarak çalıştırmanın yolu her sunucu için farklıdır.

Umarım bu makale birisi için komut satırında Java ile çalışmak için bir hile sayfası olur. Bu beceriler, Ant komut dosyalarının içeriğini ve anlamını anlamanıza ve "Hangi IDE'yi en çok beğendiniz?" sorusundan daha zorlu mülakat sorularını yanıtlamanıza yardımcı olacaktır.

Acemi programcıların çoğu şu soruyla karşı karşıyadır: "Uygulamamı IDEşimdi IDE'nin dışındaki komut satırından çalışmasını nasıl sağlayabilirim?" Ortaya çıkabilecek bir başka soru da "Bu uygulamayı diğer kullanıcılara aynı anda tüm IDE'yi vermeden nasıl dağıtabilirim?".

Bu soruların cevapları nispeten basittir, ancak her zaman açık değildir. İÇİNDE bu belge uygulamaları dağıtım ve dağıtım için hazırlamak için IDE kullanmanın temellerini göstererek bunlara yanıt verir. Ek olarak, bu belge bir programcının sistemini kurmak için gerekli olabilecek (veya uygulamanın kullanıcılarına iletilmesi gerekecek) bilgileri sağlar. Bir uygulamayı dağıtmak için birkaç farklı yaklaşım göstereceğiz ve kullanıcıların şu yollarla erişmesine izin vereceğiz:

  • Uygulamanın Java arşivi (JAR) dosyasına çift tıklayarak.
  • Bir uygulamayı komut satırından çağırma.
  • Bir komut dosyasından bir uygulamayı çağırma.
  • Java kullanımı web başlangıcı.

Bu öğretici gerektirir yazılım ve aşağıdaki tabloda listelenen malzemeler.

Yürütülebilir bir JAR dosyası oluşturma

Eğitimin bu bölümü, IDE'de yeniden dağıtılabilir bir uygulamayı nasıl oluşturabileceğinizi ve ardından uygulamayı IDE dışında nasıl çalıştırabileceğinizi gösterir. Bu uygulamayı yürütülebilir bir JAR dosyasında paketliyoruz.

JAR dosyası, dosya ve klasörler içerebilen bir arşiv dosyasıdır. JAR dosyaları ZIP dosyalarına benzer, ancak JAR dosyalarının dağıtım için yararlı ek özellikleri olabilir. Java uygulamaları. Bu öznitelikler, JAR dosyalarının dijital imzasını, isteğe bağlı sıkıştırmayı, platformlar arası uyumluluğu vb. içerir.

Bu alıştırmada, bir IDE projesi oluşturuyoruz ve ardından önceden yazılmış iki Java kaynak dosyasını projeye yerleştiriyoruz. Daha sonra sınıfları derleyeceğiz ve yürütülebilir bir JAR dosyası oluşturacağız. Bundan sonra, JAR dosyalarını IDE dışında nasıl çalıştıracağımızı göreceğiz.

kullanılan sınıflar bu kılavuz, işlevleri uygula yardımcı program GNU grep , metin veya normal ifade kalıplarını aramak için kullanılabilir. metin dosyaları. Bu proje, uygulamanın hem komut satırı sürümünü hem de GUI bakmanızı sağlayan çeşitli yollar uygulama başlatma.

Mevcut Kaynak Kod Dosyalarını Kullanarak Proje Oluşturma

  1. Uygulamayı diğer kullanıcılara dağıtma

    Artık uygulamanızın IDE dışında çalıştığını onayladığınıza göre, onu dağıtmaya geçebilirsiniz.

    Not. Uygulamanız JDK'da bulunanlar dışında ek kitaplıklara bağlıysa, bunları dağıtımınıza dahil etmelisiniz (bu örnek için geçerli değildir). Bu kitaplıkların göreli yolları, uygulama IDE'de geliştirildiğinde JAR bildirim dosyasının sınıf yolu girişine eklenir. Bu ek kitaplıklar bulunmazsa belirtilen yol sınıf (yani göreceli yol) başlangıçta, uygulama başlamaz.
    JAR dosyasını ve kitaplığını içeren bir ZIP arşivi oluşturun, ardından bunu yükleyin sıkıştırılmış dosya kullanıcılar. JAR dosyası ve kitaplık JAR dosyalarının aynı klasörde olması için kullanıcılara bu ZIP arşivini açmalarını söyleyin. Uygulama jar dosyasını çalıştırın.

    Java Uygulamasını Başlatma

    Bu alıştırmanın amacı, bir uygulamayı komut satırından çalıştırmanın bazı yollarını göstermektir.

    Bu alıştırma, bir Java uygulamasını aşağıdaki iki yolla nasıl başlatabileceğinizi gösterir:

    • Komut satırından bir java komutu çalıştırma.
    • JAR dosyasındaki bir sınıfı çağırmak için bir komut dosyası kullanma.

    Uygulamaları komut satırından başlatma

    Uygulama, Java komutu kullanılarak komut satırından başlatılabilir. Yürütülebilir bir JAR dosyası yürütmek istiyorsanız, komutun -jar seçeneğini kullanın.

    Örneğin, AnotherGrep uygulamasını çalıştırmak için aşağıdakileri yapın:

    1. Bir terminal penceresi açın. sistemlerde Microsoft Windows bu, "Başlat" düğmesine tıklanarak ve "Çalıştır..." seçilerek, "Aç:" alanına cmd yazıp "Tamam" düğmesine tıklanarak yapılır.
    2. dizine git PROJE_ANA SAYFA/dist (cd komutunu kullanarak).
    3. Ana uygulama sınıfını çalıştırmak için şu satırı girin: Java -jar AnotherGrep.jar

    Bu talimatlar izlenirse ve uygulama başlamazsa, muhtemelen aşağıdakilerden birini yapmalısınız: sonraki adımlar:

    Bir Komut Dosyasından Uygulamaları Başlatma

    Dağıtmak istediğiniz uygulama bir konsol uygulamasıysa, özellikle uygulamanın çalışması için uzun ve karmaşık argümanlar gerektiriyorsa, onu bir komut dosyasından çalıştırmayı daha uygun bulabilirsiniz. Bu bölümde, komut dosyamızda çağrılan JAR dosyasına argümanları (bir arama kalıbı ve bir dosya listesi) iletmemiz gereken Grep'in konsol sürümünü kullanıyoruz. Komut satırına yazma miktarını azaltmak için, bir test uygulamasını çalıştırmaya uygun basit bir komut dosyası kullanıyoruz.

    İlk adım, uygulamadaki ana sınıfı sınıfın konsol versiyonuyla değiştirmek ve JAR dosyasını yeniden oluşturmaktır:

    1. IDE'deki Projeler penceresinde, sağ tık fareyi proje düğümünün (AnotherGrep) üzerine getirin ve "Özellikler"i seçin.
    2. Çalıştır düğümünü seçin ve Ana Sınıf özelliğini othergrep.Grep (anothergrep.xGrep'ten) olarak değiştirin. Proje Özellikleri penceresini kapatmak için Tamam düğmesine tıklayın.
    3. Proje düğümüne tekrar sağ tıklayın ve Temizle ve Proje Oluştur'u seçin.

    Bu adımlar tamamlandığında, JAR dosyası yeniden oluşturulacak ve JAR dosyasının bildirimindeki Ana Sınıf özniteliği, othergrep.Grep öğesini işaret edecektir.

    bash betiği - UNIX ve Linux çalıştıran bilgisayarlar için

    Dosyanın içeriğinin çıkarıldığı klasörde grep.sh adında bir bash betiği bulabilirsiniz. Şuna bir göz atalım:

    #!/bin/bash java -jar dist/AnotherGrep.jar [e-posta korumalı]

    İlk satır, bu betiği yorumlamak için hangi komut yorumlayıcısının kullanılacağını belirtir. İkincisi, IDE tarafından klasörde oluşturulan JAR dosyasını yürütür. PROJE_ANA SAYFA/dist. [e-posta korumalı] komut dosyasına iletilen tüm argümanları, her birini tırnak içine alarak kopyalar.

    Bu senaryo şunu ima ediyor ikili dosyalar Java, PATH ortam değişkeninin bir parçasıdır. Bu komut dosyası bilgisayarınızda çalışmıyorsa, bkz.

    Ek Bilgiler bash yorumlayıcısı için komut dosyası yazma hakkında bulunabilir.

    Windows bilgisayarlar için .bat komut dosyası

    Microsoft Windows bilgisayarlarda, toplu iş dosyalarına aynı anda en fazla dokuz bağımsız değişken iletilebilir. Dokuzdan fazla argüman varsa, JAR dosyasının birden çok kez yürütülmesi gerekecektir.

    Bunun için komut dosyası gibi görünebilir Aşağıdaki şekilde:

    @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% için %%i in (0 1 2 3 4 5 6 7 8) do shift goto:loop:allprocessed

    Bu komut dosyası, eylem halinde görmek istiyorsanız, arşiv içeriğinin çıkarıldığı klasörde grep.bat adı altında bulunabilir.

    İçinde dokuz argüman sunuluyor toplu iş dosyası nasıl % , nerede içinde bir değer olmalı<0-9>. %0 komut dosyası adı için ayrılmıştır.

    Programa aynı anda (bir döngüde) yalnızca dokuz argümanın iletildiğini görebilirsiniz. for ifadesi, argümanları bir sonraki döngüye hazırlamak için basitçe dokuza kaydırır. Döngü, if ifadesi tarafından boş bir dosya argümanı bulunduğunda sona erer (bu, işlenecek yeni dosya olmadığını gösterir).

    Toplu komut dosyası oluşturma hakkında daha fazla bilgi adresinde bulunabilir.

    Java Web Start için bir Uygulamayı Paketleme

    Java Web Start, Java uygulamalarını tek bir tıklamayla bir web tarayıcısından başlatmak için kullanılan bir teknolojidir. Java Web Start kullanarak dağıtım için paketleme uygulamaları hakkında ayrıntılar için, bkz. NetBeans IDE'de Java Web Start'ı Etkinleştirme. Burada, bir uygulamayı Java Web Start kullanarak konuşlandırılabilir hale getirmek için gereken adımların yalnızca kısa bir açıklamasını sunuyoruz.

    1. Projeler penceresinde proje düğümüne sağ tıklayın ve Özellikler'i seçin.
    2. Proje Özellikleri penceresinin Web Başlatma sekmesinde, Web Başlatmayı Etkinleştir onay kutusunu seçin.
    3. Yalnızca yerel yürütmeyi test edeceğimiz için Codebase açılır menüsünden Yerel Yürütme'yi seçin.
      Diğer tüm varsayılan ayarları koruyun ve Tamam'ı tıklayın.
    4. Proje düğümüne sağ tıklayın ve Temizle ve Proje Oluştur'u seçin.
      Bu komut IDE, önceden derlenmiş tüm dosyaları ve derlemeleri kaldırır, uygulamayı yeniden derler ve projeyi yeni ayarlarla oluşturur.
    5. IDE dışında, klasörü açın PROJE_ANA SAYFA/dist , ardından tarayıcınızda launch.html dosyasını açın.
      Bir test görünecektir. HTML sayfası Başlat düğmesi ile.
    6. Uygulamayı açmak için Başlat düğmesine basın.
      Java'nın yüklendiğini ve uygulamanın çalıştığını görebileceksiniz.

      Not. Bazı tarayıcılar, kullanıcıları önce Java indirme sayfasına yönlendirir.

    JAR Dosya İlişkilendirmelerini Belirtme

    Çoğu bilgisayarda, yürütülebilir bir JAR dosyası, dosyaya çift tıklayarak yürütülebilir. Bir JAR dosyasına çift tıkladığınızda hiçbir şey olmuyorsa, bunun nedeni aşağıdaki iki nedenden biri olabilir:

    • JAR dosya türü, ortamla ilişkili değil java çalışma zamanı(JRE) bu bilgisayarda.

      JAR dosya türü bir JRE ile ilişkilendirilmişse, o dosyayı temsil eden simgenin Java logosunu içermesi gerekir.

    • JAR dosya türü JRE ile eşlenir, ancak -jar seçeneği, simgeye çift tıklandığında JRE'ye iletilen komutun parçası değildir.

    Not. Bazen JAR dosya ilişkileri, zip dosyalarını işlemeye yönelik yazılımlar gibi kurulu yazılımlar tarafından değiştirilir.

    Bir JAR dosya türünün bir araca bağlanma şekli java'yı çalıştır, işletim sistemine bağlıdır.

    Bilgisayarınızda JRE sürümlerinden birinin kurulu olduğundan emin olun. Sürüm 1.4.2 veya üzeri kullanılmalıdır. Java uygulamaları, Java yüklü olmayan bilgisayarlarda çalıştırılamaz. Java platformu. (Bir Java Geliştirme Kiti (JDK) kuruluysa, onunla birlikte JRE de kurulur. Ancak program programcı olmayanlara dağıtılırsa, kullanıcılar JRE veya JDK'ya sahip olmayabilir.)

    • Windows XP'de yüklü sürüm Java, "Başlat" > "Denetim Masası" > ("Program Ekle veya Kaldır") seçilerek kontrol edilebilir (örneğin, Java(TM) 6 Güncelleme 33 olmalıdır).
    • Üzerinde Windows Vista veya Java'nın 7 yüklü sürümü "Başlat" > "Denetim Masası" > ("Programlar ve Özellikler") seçilerek kontrol edilebilir (belirtilmelidir, örneğin Java (TM) 6 Güncelleme 33).

    Bilgisayarınızda Java platformu yoksa JRE, Java SE indirme sitesinden indirilebilir.

    Bilgisayarınızda zaten varsa ancak dosya ilişkilendirme çalışmıyorsa, Microsoft Windows'ta JAR dosya ilişkilendirmesini eklemek için aşağıdaki adımları izleyin:

    1. "Başlat" > "Denetim Masası"nı seçin.
    2. (Yalnızca Windows Vista için geçerlidir). "Denetim Masası" > "Programlar"a tıklayın.

    3. Windows Vista veya 7 için Varsayılan Programlar'a tıklayın ve Bir dosya türünü veya protokolü bir programla ilişkilendir'i seçin.
    4. (Windows XP'de, iletişim kutusunun Ayrıntılar bölümünde Programı Değiştir'e tıklayın.)
    5. Program Seçimi iletişim kutusunda Java Platform SE Binary'yi seçin.
    6. "Program Seç" iletişim kutusundan çıkmak için "Tamam" düğmesini tıklayın.
    7. Klasör Seçenekleri iletişim kutusunu (Windows XP'de) veya bir dosya türünü veya protokolü belirli programlarla ilişkilendirmek için iletişim kutusunu (Windows 7'de) kapatmak için Kapat düğmesini tıklayın.

    Not. JAR dosyaları sistemdeki Java Platform SE Binary ile ilişkilendirilmişse, ancak çift tıklama yine de JAR dosyasını başlatmıyorsa, dosya ilişkilendirmesinde -jar seçeneğini belirtmeniz gerekebilir.

    Microsoft Windows XP'de dosya ilişkilendirmesinde -jar seçeneğini belirtmek için şu adımları izleyin:

    1. "Başlat" > "Denetim Masası"nı seçin.
    2. Windows XP'de "Klasör Seçenekleri"ne çift tıklayın ve "Dosya Türleri" sekmesini seçin.
    3. Kayıtlı Dosya Türleri listesinde JAR dosyasını seçin.
    4. İletişim kutusunun Ayrıntılar bölümünde Gelişmiş'e tıklayın.
    5. Dosya Türü Özelliklerini Düzenle iletişim kutusunda, Düzenle...'ye tıklayın.
    6. "Eylemi yürüten uygulama" metin kutusunda, JRE yolunun sonuna aşağıdaki satırı ekleyin: -jar "%1" %* Bundan sonra, kutu aşağıdakine benzer bir metin içermelidir: "C:\Program Files\Java\jre1.6.0_33\ bin\javaw.exe" -jar "%1" %*
    7. Tip Eylemini Değiştir iletişim kutusundan çıkmak için Tamam'a tıklayın.
    8. Dosya Türü Özelliklerini Düzenle iletişim kutusundan çıkmak için Tamam'a tıklayın.
    9. Klasör Seçenekleri iletişim kutusundan çıkmak için Kapat düğmesini tıklayın.

    Not. Windows Vista'dan başlayarak, genişletilmiş dosya ilişkilendirmeleri RegEdit kullanılarak yapılandırılabilir. Daha fazla bilgi için Dosya türleri iletişim kutusuna ne oldu? .

    UNIX ve Linux sistemleri için, dosya ilişkilendirmelerini değiştirme prosedürü, hangi masaüstü ortamının (GNOME veya KDE gibi) kullanıldığına bağlıdır. Çalışma alanı ayarlarınıza bir göz atın veya çalışma alanı belgelerini okuyun.

    PATH ortam değişkenini ayarlama

    Bilgisayarınız JDK veya JRE'nin konumunu belirtmeden bir Java sınıfını veya JAR dosyasını çalıştıramıyorsa, sistem PATH ortam değişkeninin değerini değiştirmeniz gerekebilir.

    çalışırken Microsoft sistemi Windows, PATH değişkenini ayarlama prosedürü, kullandığınız Windows sürümüne bağlıdır.

    PATH değişkenini şu şekilde ayarlamak için adımlar şunlardır: Windows sistemi DP:

    1. "Başlat" > "Denetim Masası"nı seçin ve "Sistem"e çift tıklayın.
    2. Sistem Özellikleri iletişim kutusunda Gelişmiş sekmesini seçin.
    3. Ortam Değişkenleri sekmesine tıklayın.
    4. Kullanıcı ortamı değişkenleri listesinde PATH'i seçin ve Düzenle düğmesini tıklayın.
    5. JRE konumunu yol listesinin sonuna ekleyin. Listedeki konumlar noktalı virgülle (;) ayrılır.
      Örneğin, JRE C:\Program Files\Java\jdk1.6.0_23 konumundaysa, PATH değişkeninin sonuna şunu ekleyin: C:\Program Files\Java\jdk1.6.0_23\bin
    6. Ortam Değişkenleri iletişim kutusundan çıkmak için Tamam'a tıklayın, ardından Sistem Özellikleri iletişim kutusundan çıkmak için Tamam'a tıklayın.

    çalışırken işletim sistemi UNIX veya Linux, PATH ortam değişkenini değiştirme şekliniz, kullandığınız komut yorumlayıcı programına bağlıdır. Daha fazla bilgi için komut yorumlayıcı belgelerine bakın.

    Sıradaki ne?

    NetBeans IDE ile çalışma hakkında daha fazla bilgi için NetBeans web sitesine bakın.

    IDE'de sınıf yolu yönetimi de dahil olmak üzere Java uygulaması geliştirme hakkında daha fazla bilgi belgede mevcuttur.

nasıl başlamalı java programı?

Ustanın yanıtı:

Java dilinde yazılmış bir uygulama, bu programın bileşenleri yürütülebilir bir jar arşivinde derlenmemişse, bir jar arşivi veya bir dizi *.java ve *.class dosyasıdır. koşmak için benzer uygulama, Java Runtime Environment'ı yüklemeniz gerekecek.

Bunu yapmak için, http://java.sun.com/javaee/sdk/ adresinde bulunan java geliştiricilerinin resmi web sitesinin sayfasına gitmeniz ve ardından indirmeniz gerekir. En son sürüm java makineleri. Ardından, programı sabit sürücünüze yüklemeniz gerekecek kişisel bilgisayar ve işletim sistemine, programın yüklendiği yerin yolunu ortam değişkenlerinin yol parametresine eklemeniz gereken yüklediğiniz dosyaların yolunu söyleyin (sekme, bilgisayarın özelliklerinde bulunan "Gelişmiş" olarak adlandırılır) pencere).

Ana menüyü kullanarak veya cmd komutunu girerek, "Çalıştır" alanına komut satırını başlatmanız gerekir. Komut satırında çalıştırmak istediğiniz java programının dizinine gidin. Bu prosedürü tamamladıktan sonra, java -cp [dosya adı].jar [ana program sınıfının adı] komutunu girin ve Enter tuşuna basın, bu dosya yürütmeyi başlatacaktır.

Java dosyalarını derlemek için javac[ana dosyanın adı].java ve ardından java -cp [dosyaadı] yazın. Java dosyalarını komut satırından başlatmak için parametreler hakkında bilgi aldıktan sonra, girmeniz gerekir. java operatörü-help ve Enter tuşuna basın.

Ekran gösterilecek tam liste seçenekleriyle birlikte kullanılabilir komutlar. Tüm komutlar tam olarak girilmelidir, çünkü hatalı bir kombinasyon girerek kişisel bilgisayarınızın tüm işletim sistemine zarar verebilirsiniz.

Mobil cihazlar için Java dilinde yazılmış mini oyunları bilgisayarınızda çalıştırmak istiyorsanız MidpX programını indirmeniz gerekecektir. Bu uygulama, jar dosyalarını gereksiz komplikasyonlar olmadan çalıştırmanıza izin verecektir. Bu yazılımı yükledikten sonra jar dosyalarından birine sağ tıklayın ve "Özellikler" adlı öğeyi seçin. Görünen pencerede, "Değiştir" düğmesine tıklamanız ve bu tür dosyaları, yani MidpX yardımcı programını açmak için uygun bir program seçmeniz gerekecektir.