Chạy lớp trong tệp Jar


176

Nếu bạn có một tệp jar được gọi là myJar.jarnằm trong / myfolder và bạn muốn sử dụng lớp được gọi myClasstừ nó, làm thế nào để bạn thực hiện nó từ dòng lệnh?

Tôi nghĩ rằng nó sẽ được vào thư mục và nói java -cp myJar.jar.myClassnhưng điều đó không hiệu quả. Bất kỳ trợ giúp sẽ được đánh giá cao.


java -cp myJar.jar myClasshoạt động tốt với tôi - bạn có một khoảng thời gian giả trong dòng lệnh của bạn thay vì một khoảng trắng?
Chris Dodd

1
Ý bạn là gì khi bạn nói rằng bạn muốn 'sử dụng' lớp đó? Có một phương pháp chính mà bạn muốn gọi cụ thể không?
Marsellus Wallace

Câu trả lời:


256

Sử dụng java -cp myjar.jar com.mypackage.myClass.

  1. Nếu lớp không có trong một gói thì đơn giản java -cp myjar.jar myClass.

  2. Nếu bạn không ở trong thư mục myJar.jarđược đặt, thì bạn có thể làm:

    1. Trên nền tảng Unix hoặc Linux:

      java -cp /location_of_jar/myjar.jar com.mypackage.myClass

    2. Trên Windows:

      java -cp c:\location_of_jar\myjar.jar com.mypackage.myClass


10
Chỉ cần thêm vào nó - trong trường hợp com.mypackage.myClass (trong ví dụ trên) có sự phụ thuộc vào các lọ khác, hãy chạy nó như sau: java -cp Depfile1.jar; Depfile2.jar; c: \ location_of_jar \ myjar.jar com. mypackage.myClass
akjain 16/07/14

2
Một đường dẫn thất bại có thể xảy ra trong trường hợp điều này không hoạt động: hãy chắc chắn rằng đường dẫn đủ điều kiện đến lớp của bạn khớp chính xác với những gì trong tệp jar của bạn. Nếu bạn giải nén -l /location-of-jar/myjar.jar và thấy một cái gì đó ngoài com / mypackage / myClass, đây là vấn đề của bạn. (Ví dụ: nếu bạn thấy bin / com / mypackage / myClass, bạn nên gửi cd vào thùng để tạo tệp jar của bạn; những gì bạn sẽ không hoạt động.)
Scott C Wilson

sử dụng MyClass, không phải myClass
Breno Inojosa

Bằng cách thử ở trên, tôi nhận được lỗi Ngoại lệ trong luồng "chính" java.lang.NoClassDefFoundError: dưa chuột / api / cli / Main tại com.company.project.demo.bdd.runner.Execute.main (Execute.java:20 ) Nguyên nhân do: java.lang.ClassNotFoundException: cucumber.api.cli.Main tại java.net.URLClassLoader.findClass (Nguồn không xác định) tại java.lang.ClassLoader.loadClass (Nguồn không xác định) tại sun.misc.Launcher $ AppClass. loadClass (Nguồn không xác định) tại java.lang.ClassLoader.loadClass (Nguồn không xác định) ... thêm 1
Vaibhav_Sharma

24

Bạn muốn:

java -cp myJar.jar myClass

Các tài liệu đưa ra ví dụ sau đây:

C:> java -classpath C:\java\MyClasses\myclasses.jar utility.myapp.Cool

18

Có hai loại tệp JAR có sẵn trong Java:

  1. Tệp jar Runnable / Executable có chứa tệp kê khai. Để chạy một bình Runnable, bạn có thể sử dụng java -jar fileName.jarhoặcjava -jar -classpath abc.jar fileName.jar

  2. Tệp jar đơn giản không chứa tệp kê khai để bạn chỉ cần chạy lớp chính của mình bằng cách đưa ra đường dẫn của nó java -cp ./fileName.jar MainClass


6

Giả sử bạn đang ở trong thư myJar.jarmục chứa tệp và myClasspublic static void main()phương thức trên đó:

Bạn sử dụng dòng lệnh sau:

java -cp ./myJar.jar myClass

Ở đâu:

  1. myJar.jarnằm trong đường dẫn hiện tại , lưu ý rằng .không phải trong đường dẫn hiện tại trên hầu hết các hệ thống. Một con đường đủ điều kiện được ưa thích ở đây là tốt.

  2. myClasslà một đường dẫn gói đủ điều kiện đến lớp, ví dụ giả định rằng myClasstrong gói mặc định đó là thông lệ xấu, nếu nó nằm trong gói lồng nhau thì nó sẽ như vậy com.mycompany.mycode.myClass.


1

Đây là cách đúng để thực thi a .jar, và bất cứ thứ gì trong một lớp .jarnên có main()và sau đây là các tham số cho nó:

java -DLB="uk" -DType="CLIENT_IND" -jar com.fbi.rrm.rrm-batchy-1.5.jar
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.