2012-03-30 44 views
38

Tôi đã viết một chương trình đơn giản bằng cách sử dụng một ứng dụng Java (không phải ứng dụng có các dự án, nhưng ứng dụng trong một dự án; .java) có một khung duy nhất. Cả hai tệp đều là .java nên tôi không thể viết tệp kê khai cần thiết bởi JAR. MyApp.java bắt đầu như một lớp với gói, nhập khẩu sau đó lớp công khai MyApp {và có một hàm chính, nhưng nó vẫn là .java! Tôi đang viết nó trong JDeveloper 11g nếu nó giúp ...Làm cách nào để tạo một JAR từ .java

Bất kỳ ý tưởng nào về cách tạo một tệp JAR từ các tệp này?

+1

Tôi nghĩ rằng điều này có thể thực hiện dễ dàng hơn nhiều bằng cách sử dụng công cụ đóng gói như ANT hoặc Maven – Churk

+0

Đồng ý với Chuck. Hãy xem ANT. IDE là tuyệt vời để phát triển, nhưng bạn cần phải hiểu cách mọi thứ hoạt động. Các tệp java được biên dịch qua javac thành các tệp .class, sau này, các tệp .class có thể được đóng gói vào một cái bình với lệnh jar. (Ant có các nhiệm vụ để thực hiện điều này, ngay cả jdeveloper cũng có một số thuật sĩ để thực hiện việc này). – BigMike

+0

Bản thân JDeveloper nên có khả năng tạo các tệp jar. Một tìm kiếm google nhanh chóng đi kèm với một howto ở đây: http://tompeez.wordpress.com/2011/06/01/creating-a-jar-file-in-jdeveloper/ – stolzem

Trả lời

15

Đơn giản chỉ cần với dòng lệnh:

javac MyApp.java 
jar -cf myJar.jar myApp 

IDE chắc tránh sử dụng dòng lệnh terminal

+7

Ở trên làm việc, tuy nhiên tôi cần phải xác định '.class' của myApp. Vì vậy, nó cũng là 'jar -cf myJar.jar myApp.class' ' – Navigatron

+2

Lỗi chính tả ở đây, và nó giả định không có câu lệnh gói nào. Không đủ. – EJP

53

Mở một dấu nhắc lệnh.

Vào thư mục nơi bạn có file java của bạn

Tạo một thư mục xây dựng

Run java biên soạn từ dòng lệnh

javac -d ./build *.java 

nếu không có lỗi, trong xây dựng thư mục bạn nên có cây lớp học của mình

di chuyển đến thư mục xây dựng và thực hiện

jar cvf YourJar.jar * 

Để thêm kiểm tra biểu hiện dòng lệnh jar chuyển

+0

Tôi đã thử biên dịch từ dòng lệnh, nhưng tôi gặp lỗi: Frame1.java:23: gói oracle.jdeveloper.layout không tồn tại Làm cách nào để giải quyết? Xin lỗi cho các câu hỏi newbie ... – user1303007

+0

bạn phải xây dựng classpath giới thiệu tất cả các thư viện bạn đang tham khảo trong các lớp học của bạn. Kiểm tra cài đặt jdeveloper của bạn, cần có một số ví dụ xây dựng kiến ​​(tệp build.xml) và ít nhất một vài hướng dẫn tốt về cách sử dụng jDeveloper với ANT trên trang web của Oracle. – BigMike

+0

@ user1303007 hãy xem tại đây http://www.oracle.com/technetwork/articles/adf/part4-098813.html – BigMike

4

này có thể được thực hiện mà không bị đầu cuối, trực tiếp từ IDE. Ví dụ, Netbeans.

  1. Tạo dự án riêng với gói (Tạo dự án - Java - Java Class Library).
  2. Đặt các lớp .java của bạn ở đó.
  3. Xây dựng dự án này.
  4. Chuyển đến thư mục dự án của bạn và tìm thư mục xây dựng và phân phối ở đó.
  5. Tìm tệp .jar trong thư mục dist của bạn.
  6. Nhận dự án khác của bạn và thêm tệp .jar này vào thư viện dự án.
  7. Bây giờ bạn có thể tham khảo các lớp học từ thư viện này và các phương thức của nó trực tiếp từ mã, nếu quá trình nhập được tự động thực hiện cho bạn.
2

Thông thường bạn sẽ muốn chỉ định một biểu hiện, như vậy:

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

Những lần đọc: "tạo verbose jarFilename manifestFilename", tiếp theo là các tập tin bạn muốn bao gồm. Verbose có nghĩa là in thông điệp về những gì nó đang làm.

Lưu ý rằng tên tệp kê khai bạn cung cấp có thể là bất kỳ thứ gì, vì jar sẽ tự động đổi tên và đặt nó vào đúng thư mục trong tệp jar.

5

Ok đây là giải pháp tôi đã có thể thích để tìm kiếm, thay vì ở đây tôi viết nó:

Đầu tiên tạo cấu trúc thư mục tương ứng với gói được xác định cho các file java, nếu nó là my.super.application tạo thư mục "của tôi" và bên trong nó "siêu" và bên trong nó các tập tin .java "App.java"

sau đó từ dòng lệnh:

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

Thông báo trên sẽ bao gồm nhiều thư viện, nếu dưới cửa sổ sử dụng "," để tách nhiều tệp khác e dưới GNU/Linux sử dụng ":" Để tạo một tập tin jar

jar -cvfe App.jar App my/app/ 

ở trên sẽ tạo ra các ứng dụng với Manifest tương ứng của nó cho thấy sự ứng dụng như lớp chính.

Bao gồm các thư viện được yêu cầu bên trong tệp jar không thể sử dụng tham số dòng lệnh java hoặc jar.

Bạn có thể thay:

  1. tự giải nén các thư viện vào thư mục gốc của file jar
  2. sử dụng một IDE như Netbeans và chèn một quy tắc bên trong phần hậu lọ nbproject/xây dựng-impl. xml để trích xuất các thư viện bên trong bình. Xem bên dưới.
<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> 

tên file.reference được tìm thấy bên trong tập tin project.properties sau khi bạn thêm các thư viện để Netbeans IDE.

Các vấn đề liên quan