2010-02-18 25 views
9

Tôi muốn có một ứng dụng Java có thể dễ dàng bắt đầu.Làm thế nào để tạo một ứng dụng Java có thể được chạy bằng một cú nhấp chuột?

Cho đến nay tôi đã quản lý để tạo tệp jar nhưng tôi chưa thấy bất kỳ lợi thế nào. Trước khi tôi chạy ứng dụng của mình bằng "java HelloWorldSwing" và bây giờ tôi sử dụng "java -jar HelloWorldSwing.jar" (thậm chí còn phức tạp hơn lệnh trước đó và, theo như tôi đã hiểu, việc sử dụng tệp jar yêu cầu sự hiện diện của * .mf trong cùng một thư mục).

Tôi muốn có một trong hai tình huống sau đây:

  1. Chỉ cần một tập tin duy nhất mà có thể được sao chép vào một hệ thống hoạt động và dự án có thể được bắt đầu chỉ bằng cách nhấp chuột vào tập tin này trong một trình duyệt tập tin (tại thời điểm này nếu bấm vào tập tin jar của tôi Ubuntu bắt đầu trích xuất lưu trữ (vì jar là một kho lưu trữ, tôi biết)).

  2. Tạo một tượng hình có thể được đặt trên máy tính để bàn và nhấp vào đó sẽ khởi tạo chương trình Java của tôi.

+2

"như xa như tôi hiểu, việc sử dụng một file jar đòi hỏi sự hiện diện của file * .mf trong cùng thư mục" Không, file manifest của bạn nên được đưa vào bình của nó với tùy chọn dòng lệnh '-m' manifestfile' của 'jar' – Powerlord

Trả lời

2

Dưới đây một số liên kết có thể giúp u ..

JSmooth là một Java thực thi Wrapper. Nó tạo ra của Windows phóng quê hương

http://jsmooth.sourceforge.net/ 

Cross-nền tảng Java wrapper thực thi

http://launch4j.sourceforge.net/ 


http://www.captain.at/programming/java/executable-java-application.php 
0

Bạn có thể tạo một tập tin jar thực thi, như được mô tả tại đây:

http://csdl.ics.hawaii.edu/~johnson/613f99/modules/04/jar-files.html

Sau đó, người dùng có thể nhấp vào nó trong trình duyệt tệp và bắt đầu lớp học chính, miễn là hệ điều hành và cài đặt bảo mật của người dùng cho phép.

+0

Tôi chỉ cần làm theo hướng dẫn từng bước một. Cuối cùng tôi có một tệp jar mà tôi có thể chạy thành công. Tuy nhiên, khi tôi mở thư mục bằng tệp jar trong trình duyệt tệp của mình, tôi thấy tệp jar là tệp lưu trữ. Kích đúp vào kho lưu trữ bắt đầu khai thác kho lưu trữ. – Roman

+0

Thật không may, bạn không thể thực sự làm bất cứ điều gì về các trình duyệt tập tin mà từ chối tự động chạy công cụ (mà, sau khi tất cả, thường là một ý tưởng rất tốt). Ngay cả khi bạn đã biên dịch toàn bộ JRE và chương trình của bạn thành một tệp .EXE lớn, ngày nay trình quản lý tệp có thể từ chối chạy nó vì nó là "tệp tải xuống không an toàn", trừ khi bạn quản lý để ứng dụng của bạn được nhà cung cấp OS chứng nhận. Đó là một cuộc chạy đua vũ khí mà cuối cùng không ai có thể giành chiến thắng. –

9

Tạo bình không phụ thuộc thực thi tương đối dễ dàng. Về cơ bản, bạn chỉ cần xác định trong lớp học chính là sử dụng MANIFEST. Sau đó nó có thể được bắt đầu với java -jar ExecutableJar.jar, nhưng hầu hết các hệ điều hành hỗ trợ bấm đúp trong trường hợp này.

Tạo lọ phụ thuộc vào các bình khác thực thi là phức tạp hơn. Bạn có thể chỉ định đường dẫn lớp trong MANIFEST, nhưng điều đó vẫn có nghĩa là bạn cần phải sao chép nhiều hơn một bình để phân phối ứng dụng của mình. Một cách khác là "đóng gói" lọ tùy theo lọ chính.

Bạn có thể làm tất cả điều này với mavenmaven-assembly-plugin. Sử dụng jar-with-dependencies được định cấu hình trước descriptor.

<configuration> 
    <descriptorRefs> 
      <descriptorRef>jar-with-dependencies</descriptorRef> 
    </descriptorRefs> 
</configuration> 

Các lớp học chính có thể được xác định với một cái gì đó như:

<archive> 
    <manifest> 
     <mainClass>org.company.MyClass</mainClass> 
    </manifest> 
</archive> 

EDIT: Một hoàn pom.xml có thể được tìm thấy trong this question.

0

Bạn phải tạo một bình thực thi, với đề cập đến lớp chính của bạn (tức là một lớp công khai với phương thức main() trong nó) trong tệp kê khai của jar là lớp chính. Vì vậy, khi prople nhấp đúp chuột vào nó hoặc gõ: jar "jar tên của bạn" trong giao diện điều khiển lệnh sau đó họ sẽ nhận được nó thực thi.

2

Launch4J cho phép bạn khởi chạy JAR trên nhiều nền tảng.

2

Được gọi là WebStart,

Tuy nhiên, nó không hoàn toàn phù hợp với mô tả của bạn. Nó không cung cấp một giải pháp tự đóng gói nên tồn tại.

PS. Cá nhân tôi tin rằng thực thi jar là một trò đùa, bạn không thể kiểm soát vmargs, không thể có một biểu tượng tốt, và bạn thậm chí không thể biết nó có thể thực thi cho đến khi nó đang được giải nén và cố gắng thực thi.

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