Çalıştırılabilir bir JAR dosyası nasıl oluşturulur?


Yanıtlar:


84

Bir jar dosyası, basitçe java dosyalarının bir koleksiyonunu içeren bir dosyadır. Bir jar dosyasını yürütülebilir yapmak için, mainsınıfın jar dosyasında nerede olduğunu belirtmeniz gerekir . Örnek kod aşağıdaki gibi olacaktır.

public class JarExample {

    public static void main(String[] args) {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                // your logic here
            }
        });
    }
}

Sınıflarınızı derleyin. Bir kavanoz yapmak için ayrıca bir Manifest Dosyası ( MANIFEST.MF) oluşturmanız gerekir . Örneğin,

Manifest-Version: 1.0
Main-Class: JarExample

Derlenmiş çıktı sınıfı dosyalarını (JarExample.class, JarExample $ 1.class) ve manifest dosyasını aynı klasöre yerleştirin. Komut isteminde, dosyalarınızın yerleştirildiği klasöre gidin ve jar komutunu kullanarak jar'i oluşturun. Örneğin (manifest dosyanızı jexample.mf olarak adlandırırsanız)

jar cfm jarexample.jar jexample.mf *.class

Çalıştırılabilir jarexample.jar oluşturacaktır.


34
Sadece iki sentim: İlla bir bildirim dosyası oluşturmanız gerekmez. İçin kavanoz Eğer bayrak belirtirseniz fayda, e yerine m , o zaman sadece yerine bir bildirim dosyasından daha, uygulamanın (ana sınıfı olduğunu) giriş noktası belirtmeniz gerekir. Örnek:jar cvfe jarexample.jar com.example.jar.JarExample *.class
Powerslave

1
MANIFEST.MF dosyasını oluşturursanız, son satırı bir satır sonu ile bitirmeyi unutmayın. Windows'ta sonuna boş bir satır ekleyin. Aksi takdirde, son özellik onu jar dosyasında yapmaz. Bu özel durumda Ana Sınıf özelliği eksik olacaktır.
David

36

In Eclipse aşağıdaki gibi basitçe yapabilirsiniz:

Java Projenize sağ tıklayın ve Dışa Aktar'ı seçin .

Seç Java -> Runnable JAR dosyası -> İleri.

Başlatma Yapılandırmasını seçin ve Ana sınıfınız olarak proje dosyasını seçin

Kaydetmek istediğiniz Hedef klasörü seçin ve Bitir'e tıklayın.


Yapılandırmayı Başlat: <MainClasssName> - <ProjectName>
corlaez

17

İşte tek satırda:

jar cvfe myjar.jar package.MainClass *.class

nerede MainClasssenin ile sınıftır mainyöntemle ve packagebir MainClass'nın paketi.

Bunu yapmadan önce .javadosyalarınızı dosyalara derlemeniz gerektiğini unutmayın .class.

c  create new archive
v  generate verbose output on standard output
f  specify archive file name
e  specify application entry point for stand-alone application bundled into an executable jar file

Bu cevap, Powerslave'in başka bir cevap hakkındaki yorumundan esinlenmiştir.


Bir hata alıyorum,Error: Could not find or load main class mtx.testClass Caused by: java.lang.ClassNotFoundException: mtx.testClass
Anton Stafeyev

Dosyalarınızdan testClassbirinde tanımlanmış mı .class? .javaBu komutu çalıştırmadan önce kaynak ( ) dosyalarınızı derlediğinizden emin olun . Ayrıca, genellikle sınıfınız UpperCamelCase olmalıdır, TestClassbunun yerine olarak yeniden adlandırmayı deneyebilirsiniz .
River

4

Maven kullanıyorsanız, aşağıdakileri pom.xml dosyanıza ekleyin :

<plugin>
    <!-- Build an executable JAR -->
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.4</version>
    <configuration>
        <archive>
            <manifest>
                <mainClass>com.path.to.YourMainClass</mainClass>
            </manifest>
        </archive>
    </configuration>
</plugin>

Sonra koşabilirsiniz mvn package. Jar dosyası hedef dizinin altında yer alacaktır .


Yukarıdakinden bir varyant.
Vishwa Ratna

0

Bu soruyu cevaplamak için çok geç. Ama şimdi birisi bu cevabı arıyorsa, hiç hata yapmadan çalışmasını sağladım.

Her şeyden önce indirdiğinizden ve yola maven eklediğinizden emin olun . [ mvn --version], yola doğru bir şekilde eklediyseniz size bunun sürüm özelliklerini verecektir.

Şimdi, aşağıdaki kodu maven projesine [ pom.xml] ekleyin, aşağıdaki kodda , örneğin [ com.example.test.Test ] için kendi ana dosya giriş noktanızla değiştirin .

      <plugin>
            <!-- Build an executable JAR -->
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <archive>
                    <manifest>
                    <mainClass>
            your_package_to_class_that_contains_main_file .MainFileName</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>

Şimdi CMDprojenizdeki [ ] komut satırına gidin ve yazın mvn packageve dizin ProjectName-0.0.1-SNAPSHOT.jaraltındaki gibi bir jar dosyası oluşturacaktır target.

Şimdi gidin hedef dizine göre cd target.

Son olarak yazın java -jar jar-file-name.jarve evet, programınızda herhangi bir hata yoksa bu başarıyla çalışacaktır.

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.