Làm thế nào để tạo một tệp JAR thực thi?


Câu trả lời:


83

Tệp jar chỉ đơn giản là một tệp chứa tập hợp các tệp java. Để thực thi một tệp jar, bạn cần chỉ định vị trí của mainLớp trong tệp jar. Mã ví dụ sẽ như sau.

public class JarExample {

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

Biên dịch các lớp học của bạn. Để tạo một bình, bạn cũng cần tạo Tệp kê khai ( MANIFEST.MF). Ví dụ,

Manifest-Version: 1.0
Main-Class: JarExample

Đặt các tệp lớp đầu ra đã biên dịch (JarExample.class, JarExample $ 1.class) và tệp kê khai trong cùng một thư mục. Trong dấu nhắc lệnh, hãy chuyển đến thư mục chứa tệp của bạn và tạo jar bằng lệnh jar. Ví dụ: (nếu bạn đặt tên tệp kê khai của mình là jexample.mf)

jar cfm jarexample.jar jexample.mf *.class

Nó sẽ tạo jarexample.jar có thể thực thi được.


34
Chỉ hai xu của tôi: Bạn không nhất thiết phải tạo tệp kê khai. Đối với tiện ích jar , nếu bạn chỉ định cờ e thay vì m , thì bạn chỉ cần chỉ định điểm nhập (nghĩa là lớp chính) của ứng dụng, thay vì một tệp kê khai. Ví dụ:jar cvfe jarexample.jar com.example.jar.JarExample *.class
Powerslave

1
Nếu bạn tạo tệp MANIFEST.MF, đừng quên kết thúc dòng cuối cùng bằng dấu ngắt dòng. Trên Windows chỉ cần thêm một dòng trống ở cuối. Nếu không, thuộc tính cuối cùng sẽ không nằm trong tệp jar. Trong trường hợp đặc biệt này, thuộc tính Main-Class sẽ bị thiếu.
David

35

Trong Eclipse, bạn có thể làm điều đó đơn giản như sau:

Nhấp chuột phải vào Dự án Java của bạn và chọn Xuất .

Chọn Java -> Tệp JAR Runnable -> Tiếp theo.

Chọn Cấu hình khởi chạy và chọn tệp dự án làm lớp Chính của bạn

Chọn thư mục Đích nơi bạn muốn lưu và nhấp vào Kết thúc.


Launch Cấu hình: <MainClasssName> - <ProjectName>
corlaez

15

Đây là một dòng:

jar cvfe myjar.jar package.MainClass *.class

nơi MainClasslà lớp với bạn mainphương pháp, và packageMainClassgói 's.

Lưu ý rằng bạn phải biên dịch .javatệp của mình thành .classtệp trước khi thực hiện việc này.

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

Câu trả lời này lấy cảm hứng từ bình luận của Powerslave về một câu trả lời khác.


Tôi đang gặp lỗi,Error: Could not find or load main class mtx.testClass Caused by: java.lang.ClassNotFoundException: mtx.testClass
Anton Stafeyev

Được testClassxác định trong một trong các .classtệp của bạn ? Đảm bảo rằng bạn đã biên dịch .javacác tệp nguồn ( ) của mình trước khi chạy lệnh này. Ngoài ra, thông thường lớp của bạn phải là UpperCamelCase, bạn có thể thử đổi tên nó thành TestClass.
River

4

Nếu bạn sử dụng maven, hãy thêm phần sau vào tệp pom.xml của bạn :

<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>

Sau đó, bạn có thể chạy mvn package. Tập tin jar sẽ nằm dưới thư mục đích .


Một biến thể hơn ở trên.
Vishwa Ratna

0

Đã quá muộn để trả lời cho câu hỏi này. Nhưng nếu ai đó đang tìm kiếm câu trả lời này bây giờ tôi đã làm cho nó chạy mà không có lỗi.

Trước hết, hãy đảm bảo tải xuống và thêm maven vào đường dẫn . [ mvn --version] sẽ cung cấp cho bạn thông số phiên bản của nó nếu bạn đã thêm vào đường dẫn một cách chính xác.

Bây giờ, hãy thêm mã sau vào dự án maven [ pom.xml], trong mã sau, hãy thay thế bằng điểm nhập tệp chính của riêng bạn, ví dụ: [ com.example.test.Test ].

      <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>

Bây giờ, hãy vào dòng lệnh [ CMD] trong dự án của bạn và nhập mvn packagevà nó sẽ tạo ra một tệp jar như một cái gì đó giống như thư ProjectName-0.0.1-SNAPSHOT.jarmục dưới target.

Bây giờ điều hướng đến thư mục đích bằng .cd target

Cuối cùng nhập java -jar jar-file-name.jarvà có, điều này sẽ hoạt động thành công nếu bạn không có bất kỳ lỗi nào trong chương trình của mình.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.