2010-02-09 25 views
5

Nếu có một điều làm tôi khó chịu về Java, bạn không thể bấm đúp vào tệp lớp để chạy. Tôi giả sử có một mục trong registry đã được chỉnh sửa để làm điều này nhưng tôi không có một đầu mối.Kết hợp các tệp lớp Java để chạy trên nhấp đúp vào Windows

Vì vậy, như đã nói trên tin nhắn. Có ai biết làm thế nào để liên kết các tập tin lớp Java để chạy trên nhấp đúp vào Windows (tôi hướng tới Windows 7 ở đây nhưng tôi chắc chắn sẽ không có sự khác biệt trong ba phiên bản mới nhất)? Nó sẽ làm cho cuộc sống của tôi (và tôi chắc chắn nhiều người khác) dễ dàng hơn nhiều!

Udpate: Tôi đã nhìn thấy các câu trả lời liên quan đến việc tạo một JAR ra khỏi lớp được đề cập và chạy theo cách đó. Tuy nhiên hữu ích, đó không phải là chính xác những gì tôi đang tìm kiếm ở đây. Tôi đang tìm kiếm Windows một cách hiệu quả để gọi số java với lớp khi nhấp đúp, với các đối số chính xác.

+2

bạn mong đợi gì .class làm gì nếu nó không có phương pháp chính (nếu nó không làm gì?) – OscarRyz

+0

lý tưởng, NoMainMethodException hoặc bất kỳ java nào sẽ ném khi bạn vượt qua một lớp mà không có phương thức chính với nó –

+1

bạn cần có cơ chế .jar để liệt kê lớp nào có chính và tất cả các phụ thuộc ở đâu. có rất ít tính hữu ích trong việc cố gắng tạo một tệp .class "runnable" vì bạn vẫn cần phải thiết lập classpath với các phụ thuộc và luôn có các phụ thuộc –

Trả lời

2

Khi bạn cài đặt Môi trường chạy thử Java, nó đăng ký tệp .jar dưới dạng liên kết trong Windows. Nếu bạn bấm đúp vào một tệp .jar, nó sẽ mở nó bằng cách sử dụng Java. Để làm việc này, bạn cần đảm bảo rằng bạn có một tệp kê khai được xác định trỏ đến lớp để chạy. Tệp lớp của bạn sẽ được chạy phải có phương thức chính sẽ được gọi.

Giả sử bạn có một lớp có tên 'com.TheClass.class' trên đĩa. Nếu bạn muốn có thể chạy với nhấp đúp, hãy tạo tệp trong thư mục mới có tên META-INF/manifest.mf. Đặt nó vào nó:

Manifest-Version: 1.2 
Main-Class: com.TheClass 

Zip (hoặc sử dụng lệnh jar) cả lớp học của bạn với thư mục và tệp kê khai này. Đổi tên nó thành mine.jar. Kích đúp vào nó và nó sẽ khởi chạy lớp của bạn với thời gian chạy Java.

2

Để tệp .class chạy, cần phải có thứ "thứ gì đó" để làm, tức là, .class phải chứa phương thức main. Không phải tất cả các .class đều có một.

Một điều bạn có thể làm là bọc ứng dụng của bạn (một số tệp .class) bên trong tệp jar.

Đối với ngắn, bạn chỉ cần thêm vào lớp học của bạn một file manifest mà nói, where the main method is:

jar -cmf yourmanifestfile.mf doubleClickApp.jar *.class 

Và đó là nó, doubleClickApp.jar tại là thực thi với một "DoubleClick" cử chỉ.

3

Giải pháp JAR hai lần nhấp chuột là phương thức phân phối Java đơn giản phổ biến nhất. Sẽ có một số vấn đề với việc cố gắng thực thi các tệp .class trực tiếp, với classpath là một trong những điều xuất hiện đầu tiên.

Điều đó nói rằng, nếu bạn muốn hỗ trợ các khả năng rất đơn giản trong môi trường phát triển của bạn, bạn hình dung có thể thực hiện một kịch bản mà

  • kiểm tra này.tập tin lớp cho tên lớp đầy đủ (bao gồm cả gói và tên lớp bên trong)
  • bước lên cây thư mục vào thư mục gốc của đường dẫn lớp của tập tin
  • (tùy chọn bao gồm bất kỳ thư mục lib chung trong classpath)
  • gọi Java đối với lớp học được xác định

Sau đó, bạn có thể đăng ký tập lệnh sáng bóng của mình làm trình xử lý tệp .class. Nhưng kể từ khi bạn đang ở trong môi trường phát triển, không phải là bạn hạnh phúc hơn với IDE của bạn làm điều đó?

+0

Chắc chắn, tôi thích IDE của tôi làm điều đó cho tôi. Nhưng tôi cảm thấy mọi thứ sẽ dễ dàng hơn nếu tôi có thể nhấp vào bất kỳ lớp nào và lý tưởng là một kịch bản làm điều đó cho tôi, và gọi java.exe trên lớp thích hợp. Tôi giả sử một kịch bản VB có thể được liên kết với menu ngữ cảnh và làm điều đó? –

+1

Chắc chắn, VBScript, chương trình Java, tập tin thực thi. Chỉ cần sử dụng "Mở bằng ..." trong trình đơn ngữ cảnh để thiết lập liên kết tệp của bạn (hoặc tuy nhiên bạn muốn thực hiện). –

5

nếu classpath doesnt vấn đề quá nhiều, dễ dàng thực hiện với một tập tin thực thi đơn giản runjava.bat hoặc lâu hơn đó là liên kết với các tập tin .class trong explorer (thông qua click chuột phải >> cởi mở với ..)

@echo off 
REM change to folder where the class file resides 
cd %~d1%~p1 
REM execute the class by calling its name without file extension 
start java %~n1 
+0

Và không nghi ngờ gì về các tệp lớp liên kết với dơi. Tôi thích đĩa CD để đối phó với classpath. Liệu 'bắt đầu' có thuận lợi không? cũng tốt để thêm '.class' vào PATHEXT thiết lập PATHEXT =% PATHEXT% ;. class như vậy từ dòng lệnh, bạn chỉ có thể nhập tên tệp lớp mà không có phần mở rộng của lớp. Ngoài ra, bạn có thể thay thế% ~ d1% ~ p1 bằng% ~ dp1 như đã đề cập trong 'for /?' – barlop

0

Cách dễ nhất mà tôi đã tìm thấy là tạo lối tắt trên cùng một thư mục với tệp .class. Sau đó nhấp chuột phải vào nó và đi đến tài sản. Thay đổi trường Target-java NameOfClass, cuối cùng nhấn đúp chuột vào shortcut :)

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