2015-05-24 15 views
16

Ứng dụng Java Swing của chúng tôi đang chạy trên Windows và được bao bọc trong tệp exe bằng cách sử dụng Launch4J.Đặt tên quy trình Java trên Windows

Chúng tôi muốn tùy chỉnh tên trình ứng dụng của chúng tôi và mô tả (trong Task Manager của Windows) vì nó hiện đang 'javaw.exe''Java Platform SE nhị phân' (mà là khó hiểu đối với khách hàng của chúng tôi) .

Trong khi các phiên bản cũ hơn của Launch4J được kích hoạt để thay đổi điều này bằng cách sử dụng <customProcName>, tùy chọn này hiện không còn tồn tại vì nó không hoạt động nữa kể từ Win7.

Có cách nào khác (đơn giản) giải pháp khác để tùy chỉnh tên và mô tả quy trình đăng ký của chúng tôi không? Ví dụ, việc thay đổi tên tệp thực thi javaw.exe có vẻ giống như một cách tiếp cận (như chúng tôi nhúng nó vào tệp exe được gói) nhưng làm thế nào để chỉ ra launch4j rằng tên tệp jvm đã thay đổi?

Một tùy chọn khác có thể là tạo tệp exe trình khởi chạy: có thể là quá mức cần thiết?

Bất kỳ ý tưởng/gợi ý nào được hoan nghênh hơn; cảm ơn!

+2

[Trùng lặp] (http://stackoverflow.com/questions/882826/how-to-change-the-name-of-a-java-application-process) và [another] (http://stackoverflow.com/questions/1057247/how-can-i-set-the-process-name-for-a-java-program). –

Trả lời

4

Nếu bạn có thể đủ khả năng, JSmooth có vẻ như thực hiện những gì bạn cần. Nó được phát hành lần cuối vào năm 2007. Lưu ý về giấy phép được lấy từ chính ứng dụng:

Thực thi được tạo ra (bản khởi chạy do JSmooth tạo) nằm trong LGPL với "ngoại lệ thời gian chạy" tương tự như ngoại lệ giấy phép gcc: Không bắt buộc bạn phân phối mã nguồn với nó, cũng không phải bạn xuất bản một thông báo đề cập đến jsmooth.

Khi sử dụng JSmooth, có phần được gắn nhãn "Bộ xương" cho phép bạn chọn một số thông số được xác định trước. Một trong số đó là một "Windowed Wrapper" đó là phù hợp cho các ứng dụng giao diện đồ họa được mô tả như sau:

bộ xương này kết thúc tốt đẹp GUI ứng dụng.

  • Không console I/O sẽ được hiển thị
  • Nếu không có Java VM được tìm thấy, nó có thể hiển thị một URL cấu hình (thường là đến một trang tải java).

Đối số có thể được chuyển đến ứng dụng (sử dụng cơ chế đối số mặc định JSmooth hoặc tạo lối tắt với đối số).

Điều quan trọng trong bộ xương này là chọn tùy chọn "Khởi chạy ứng dụng java trong quá trình exe", kết quả là chạy JVM trong cùng quy trình với exe trình bao bọc. Điều này có nghĩa là chỉ có exe được hiển thị trong Windows Task Manager, trái ngược với cả exe và quá trình java.

Cách khác là viết trình bao bọc của riêng bạn. Xem this Oracle guide để biết cách gọi JVM từ ứng dụng gốc.

3

Tôi đã làm những việc tương tự với WinRun4J, theo như tôi nhớ, nó có thể được sử dụng thương mại vì nó được cấp phép CPL. Kiểm tra này ngày hôm nay: cài đặt tên quá trình vẫn hoạt động (ban đầu đã làm điều này trên XP) với Windows 7.

Theo trang web bạn chỉ cần tạo một tập tin ini mà nói WinRun4J gì để chạy:

main.class=org.something.MyMainClass 
classpath.1=*.jar 

(có rất nhiều thông số hơn, bạn có thể thiết lập nơi JRE có thể được tìm thấy và nhiều hơn nữa)

Trong bước thứ hai bạn sao chép winrun4j.exe một cái gì đó phù hợp với ứng dụng của bạn:

copy winrun4j.exe yourapplication.exe 

(có một phiên bản dành cho Windows x64 quá)

Sau đó, bạn có RCEDIT (đi kèm với WinRun4j) thêm ini vào exe:

rcedit /N yourapplication.exe yourapplication.ini 
2

này có vẻ khá cũ, và không thực sự xứng đáng với nỗ lực, nhưng nó cũng có thể là những gì bạn đang tìm kiếm: Java exe Maker.

7

Nếu bạn đang tìm kiếm để cuộn giải pháp của riêng bạn, bạn sẽ muốn xem xét JNI và Invocation API nói riêng JNI_CreateJavaVM() được sử dụng để tạo ra một máy ảo, tìm ra phương pháp chính GetStaticMethodID() và gọi nó với CallStaticVoidMethod.

Đây là những gì java.exe, javaw.exe và nhiều trình khởi chạy gốc khác thực hiện trong nội bộ. Một số ví dụ bao gồm:

Nếu bạn muốn không muốn tích hợp một hệ thống xây dựng quê hương với java xây dựng hệ thống của bạn, một cách tiếp cận là để xây dựng một tĩnh launcher.exe trước và coi nó là một đốm màu nhị phân tĩnh. Sau đó, trong quá trình xây dựng java của bạn, hãy sửa đổi blob nhị phân bằng cách sử dụng java, để cập nhật VERSIONINFO, biểu tượng và màn hình giật gân. Bạn có thể xem ví dụ về phương pháp này trong IntelliJ LauncherGeneratorMain.java

+0

Chào mừng bạn đến với stackoverflow. Tôi đã sửa các liên kết trong câu trả lời của bạn, có thể có một cái nhìn tại đây: http://stackoverflow.com/editing-help#basic-links –

+2

@ JörnHees Cảm ơn bạn. Nhận thức rõ cú pháp; đăng nhiều liên kết yêu cầu danh tiếng, mà tài khoản anon không có. – user4978670

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