.Java dosyasından nasıl JAR yapabilirim?


88

Tek çerçeveli bir Java uygulaması (projeleri olan uygulama değil, proje içinde uygulama; .java ) kullanarak basit bir program yazıyordum . Dosyaların ikisi de .java olduğundan JAR'ın ihtiyaç duyduğu bir bildirimi yazamıyorum .

MyApp.java , paketteki bir sınıf gibi ithalatı sonra kamu sınıfını başlatır MyAppve bir ana işlevi vardır, ama yine de .java dosyasıdır! Yardımcı olacaksa JDeveloper 11g ile yazıyorum.

Bu dosyalardan nasıl JAR yapılacağına dair bir fikriniz var mı?


1
Bunun hiç ANT veya Maven olarak ambalaj aracını kullanarak çok daha kolay gerçekleştirmek edilebilir düşünüyorum
Churk

Chuck ile aynı fikirde. ANT'ye bir göz atın. IDE'ler geliştirmek için harikadır, ancak işlerin nasıl yürüdüğünü anlamanız gerekir. java dosyaları javac aracılığıyla .class dosyalarına derlenir, bundan sonra .class dosyaları jar komutuyla bir kavanozda paketlenebilir. (Ant'ın bunu yapmak için görevleri vardır, jdeveloper'ın bile bunu yapmak için bir sihirbazı vardır).
BigMike

JDeveloper'ın kendisi jar dosyası oluşturma yeteneğine sahip olmalıdır. Hızlı bir google araması burada nasıl yapılır: tompeez.wordpress.com/2011/06/01/…
stolzem

1
Sorunuzu netleştirebilir misiniz?
Romain Hippeau

Kaynak dizine gidin ve şu komutu çalıştırın: - javac * .java && jar cvf JarName.jar * .class
garish

Yanıtlar:


104

Bir komut istemi açın.

.Java dosyalarınızın bulunduğu dizine gidin

Bir dizin yapısı oluşturun

Komut satırından java derlemesini çalıştırın

javac -d ./build *.java

hata yoksa, derleme dizininde sınıf ağacınızın olması gerekir

yapı dizinine gidin ve bir

jar cvf YourJar.jar *

Bildirim eklemek için jar komut satırı anahtarlarını kontrol edin


Komut satırından derlemeyi denedim, ancak bir hata alıyorum: Frame1.java:23: oracle.jdeveloper.layout paketi mevcut değil Bunu nasıl çözebilirim?
Acemi

sınıflarınızda referans verdiğiniz tüm kitaplıkları referans alan sınıf yolunu oluşturmanız gerekir. Jdeveloper kurulumunuzu kontrol edin, bazı ant build örneği (build.xml dosyası) ve Oracle'ın sitesinde jDeveloper'ı ANT ile nasıl kullanacağınıza dair en azından birkaç iyi öğretici olmalıdır.
BigMike


1
Ana Sınıfı manifestoya otomatik olarak eklemek için jar komutuma bir seçenek ekledim ... jar cfe Main.jar Main *(Yine de kafam karıştı, Ana Sınıf adını çıktı dosyası adının
arkasına

32

Basitçe komut satırıyla:

javac MyApp.java
jar -cf myJar.jar MyApp.class

Eminim IDE'ler komut satırı terminalini kullanmaktan kaçınır


11
Yukarıdakiler işe yaradı, ancak Uygulamamın belirtilmesi gerekiyordu .class. Yani öyleydijar -cf myJar.jar myApp.class
Navigatron

3
Burada da yazım hataları var ve paket ifadesi olmadığını varsayıyor. Yetersiz.
user207421

14

Tamam, bulmak istediğim çözüm bu, onun yerine buraya yazıyorum:

Öncelikle .java dosyası için tanımlanan pakete karşılık gelen dizin yapısını oluşturun, eğer bu my.super.application ise "my" dizinini ve içinde "super" dizinini ve içinde .java dosyası "App.java" yı oluşturun

sonra komut satırından:

   javac -cp /path/to/lib1.jar:/path/to/lib2.jar path/to/my/super/App.java

Yukarıdakilerin birden çok kitaplık içereceğine dikkat edin, eğer Windows altında birden çok dosyayı ayırmak için "," kullanıyorsa, aksi takdirde GNU / Linux altında ":" Bir jar dosyası oluşturmak için

   jar -cvfe App.jar App my/app/

yukarıdaki, Uygulamayı ana sınıf olarak belirten ilgili Manifest'i ile uygulamayı oluşturacaktır.

Gerekli kitaplıkları jar dosyasının içine eklemek java veya jar komut satırı parametreleri kullanılarak mümkün değildir.

Bunun yerine şunları yapabilirsiniz:

  1. kitaplıkları jar dosyasının kök klasörüne manuel olarak çıkarın
  2. Netbeans gibi bir IDE kullanın ve kavanozun içindeki kitaplıkları ayıklamak için nbproject / build-impl.xml'nin jar sonrası bölümüne bir kural ekleyin. Aşağıya bakınız.
<target name="-post-jar">
        <!-- Empty placeholder for easier customization. -->
        <!-- You can override this target in the ../build.xml file. -->
  <jar jarfile="${dist.jar}" update="true">  
            <zipfileset src="${dist.jar}" includes="**/*.class" />  
            <zipfileset src="${file.reference.iText-1.0.8.jar}" includes="**/*"/>
      <zipfileset src="${file.reference.itextpdf-3.2.1.jar}" includes="**/*"/>
  </jar>
    </target>

file.reference adları, kitaplıkları Netbeans IDE'ye ekledikten sonra project.properties dosyasında bulunur.


9

Genellikle, şu şekilde bir bildirim belirtmek isteyeceksiniz:

jar -cvfm myJar.jar myManifest.txt myApp.class

Okur: "ayrıntılı jarFilename manifestFilename oluşturun" ve ardından eklemek istediğiniz dosyalar. Verbose, yaptığı şey hakkında mesaj yazdırmak anlamına gelir.

Sağladığınız bildirim dosyasının adının, jaronu otomatik olarak yeniden adlandıracağı ve jar dosyası içinde doğru dizine koyacağı gibi herhangi bir şey olabileceğini unutmayın .


6

Bu, terminal olmadan doğrudan IDE'den yapılabilir. Örneğin ağ fasulyesi.

  1. Paketlerle ayrı bir proje oluşturun (Proje Oluştur - Java - Java Sınıf Kitaplığı).
  2. .Java sınıflarınızı oraya koyun.
  3. Bu projeyi oluşturun.
  4. Proje klasörünüze gidin ve orada derleme ve dağıtma klasörlerini bulun.
  5. Dist klasörünüzde .jar dosyasını bulun.
  6. Diğer projenizi alın ve bu .jar dosyasını proje kitaplıklarına ekleyin.
  7. İçe aktarma sizin için otomatik olarak yapılırsa, artık bu kitaplıktaki sınıflara ve yöntemlerine doğrudan koddan başvurabilirsiniz.

3

İşte bunu yapmanın başka bir güzel yolu:

$ ls | grep .java | xargs -I {} javac {} ; jar -cf myJar.jar *.class

Bu, ls | grep .javamevcut dizininizdeki tüm .java dosyalarını ( ) alır ve bunları .class ( xargs -I {} javac {}) olarak derler ve daha sonra önceden derlenmiş sınıflardan ( jar -cf myJar.jar *.class) jar dosyasını oluşturur .


2

Java kodunuzdan bir JAR derlemenin belki de en başlangıç ​​dostu yolu, Netbeans veya Eclipse gibi bir IDE (entegre geliştirme ortamı; geliştirme için sadece kullanıcı dostu yazılım) kullanmaktır.

  • Bir IDE kurun ve ayarlayın. İşte Eclipse'in en son sürümü .
  • IDE'nizde bir proje oluşturun ve Java dosyalarınızı proje klasörünün içine koyun.
  • IDE'de projeyi seçin ve projeyi JAR olarak dışa aktarın. Dışa aktarırken uygun java dosyalarının seçildiğini iki kez kontrol edin.

Bunu komut satırıyla her zaman çok kolay bir şekilde yapabilirsiniz. Aşağıdaki gibi bir komutu çalıştırmadan önce hedeflenen dosyalarla aynı dizinde olduğunuzdan emin olun:

javac YourApp.java
jar -cf YourJar.jar YourApp.class

... "Uygulamanız" ve "YourJar" dosyalarının sırasıyla dosyalarınızın uygun adlarıyla değiştirilmesi.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.