Chạy tệp JAR trên Windows


228

Tôi có một tệp JAR có tên helloworld.jar . Để chạy nó, tôi đang thực hiện lệnh sau trong cửa sổ dòng lệnh:

java -jar helloworld.jar

Điều này hoạt động tốt, nhưng làm thế nào để tôi thực hiện nó với nhấp đúp chuột thay thế? Tôi có cần cài đặt phần mềm nào không?


1
Thực hiện theo các bước được mô tả ở đây: Thực hiện Jar trên Vista bằng cách nhấp đúp
RealHowTo 27/12 '

Câu trả lời:


123

Tuyến đường dễ nhất có lẽ là nâng cấp hoặc cài đặt lại Môi trường chạy thi hành Java (JRE).

Hoặc này:

  • Mở Windows Explorer, từ Công cụ chọn 'Tùy chọn thư mục ...'
  • Bấm vào tab Loại tệp, cuộn xuống và chọn Loại tệp JAR.
  • Nhấn nút Nâng cao.
  • Trong hộp thoại Chỉnh sửa loại tệp, chọn mở trong hộp Hành động và nhấp vào Chỉnh sửa ...
  • Nhấn nút Duyệt và điều hướng đến vị trí trình thông dịch Java javaw.exe.
  • Trong Ứng dụng được sử dụng để thực hiện trường hành động, cần hiển thị một cái gì đó tương tự C:\Program Files\Java\j2re1.4.2_04\bin\javaw.exe" -jar "%1" %(Lưu ý: phần bắt đầu bằng 'javaw' phải giống hệt như vậy; phần khác của tên đường dẫn có thể thay đổi tùy thuộc vào phiên bản Java nào bạn đang sử dụng ) sau đó nhấn các nút OK cho đến khi tất cả các hộp thoại được đóng lại.

Cái nào đã bị đánh cắp từ đây: http://windowstipoftheday.blogspot.com/2005/10/setting-jar-file-association.html


13
Tôi nghĩ rằng cách dễ dàng là nhấp chuột phải vào bất kỳ, tệp jar> mở và chọn "môi trường thời gian chạy Java". :)
Kassem

làm như vậy, luôn đưa ra lỗi này cho tôi "Nền tảng Java nhị phân SE đã ngừng hoạt động" ... Có ai có thể giúp đỡ, vấn đề có thể là gì không?
Faizan

1
@Faizan - Vấn đề của bạn có vẻ như là một vấn đề riêng biệt. Tôi thấy một vài kết quả SO và Google cho "nhị phân SE nền tảng Java đã ngừng hoạt động". Tôi sẽ kiểm tra xem.
Brian Kelly

26
không có tab Loại tệp trong tùy chọn Thư mục trong win 7
Radu Simionescu

79

Trong Windows Vista hoặc Windows 7, trình chỉnh sửa kết hợp tệp thủ công đã bị xóa.

Cách dễ nhất là chạy Jarfix , một công cụ phần mềm miễn phí nhỏ nhưng mạnh mẽ. Chỉ cần chạy nó và các ứng dụng Java của bạn đã hoạt động trở lại ... có thể nhấp đúp lần nữa.


Cảm ơn vì tiền boa, nếu chỉ có một cách để loại bỏ những hộp mới "không thể sử dụng" này
LoG

55

Nếu bạn cần phân phối tệp .jar của mình và làm cho nó có thể chạy được trên các máy tính Windows của người khác, bạn có thể tạo một tệp .bat đơn giản như thế này trong dấu nhắc lệnh:

java -jar MyJavaTool.jar

và đặt tệp .bat trong cùng thư mục với tệp .jar của bạn.


Nhưng .bat được thực thi như thế nào? Đây có phải là chiến lược tương tự để khiến ứng dụng Java mở ra một phiên dòng lệnh không?
Ungeheuer

1
À không, bạn sẽ chỉ mở tập tin bat. Tôi không chắc là tôi hiểu câu hỏi của bạn.

26

Nếu bạn có một tệp jar có tên là example.jar, hãy làm theo các quy tắc sau:

  1. Mở một notepad.exe
  2. Viết: java -jar Example.jar
  3. Lưu nó với phần mở rộng .bat
  4. Sao chép nó vào thư mục có .jar tập tin
  5. Nhấp đúp chuột vào nó để chạy .jartập tin của bạn

4
1) Điều đó sẽ không hoạt động trên Mac. hoặc Unix. 2) Nó tạo ra một tập tin không cần thiết. 3) Câu trả lời tốt hơn đã được cung cấp hơn 2 năm trước. 4) .. Và từ đó là 'bạn'.
Andrew Thompson

Cách tuyệt vời để chạy một jar trên Windows! Nó cũng không ẩn đầu vào dòng lệnh, vì vậy tôi có thể thấy lý do tại sao bình của tôi không chạy như tôi nghĩ. Cảm ơn bạn.
Joe

15

Một tác dụng phụ thú vị của việc này gây ra sự cố khi bắt đầu các tệp jar có thể chạy được trong dấu nhắc lệnh.

Nếu bạn thử (trong một dấu nhắc lệnh):

jarfile.jar parameter

Không có niềm vui, bởi vì điều này đang được dịch sang phần sau (không hoạt động):

javaw.exe -jar jarfile.jar parameter

Tuy nhiên, lệnh sau không hoạt động:

java.exe -jar jarfile.jar parameter

Nếu bạn thay đổi liên kết trong trình quản lý tệp như được mô tả ở trên thành:

"C:\Program Files\Java\j2re1.4.2_04\bin\java.exe" -jar "%1" %*

Sau đó, bạn có thể gõ:

jarfile.jar parameter

trong dấu nhắc lệnh và bây giờ nó sẽ hoạt động!

EDIT: (Tuy nhiên, sau đó bạn nhận được một cửa sổ bảng điều khiển màu đen khi bạn chạy một ứng dụng Java dựa trên biểu mẫu (không phải bàn điều khiển), vì vậy đây không phải là một giải pháp lý tưởng)

Nếu bạn chạy các tệp jar này bằng cách nhấp đúp vào chúng trong các cửa sổ, sẽ không có thông số nào được thông qua để mã Java của bạn cần xử lý ngoại lệ tràn ngăn xếp và bao gồm chức năng "nhấn phím" ở cuối hoặc cửa sổ sẽ biến mất.

Để truyền tham số trong windows, bạn phải tạo lối tắt cho tệp jar, bao gồm tham số trong dòng đích (nhấp chuột phải vào phím tắt và chọn thuộc tính), bạn không thể thêm tham số vào biểu tượng tệp jar trong này đường.

Không có một giải pháp duy nhất, nhất quán nào ở đây, nhưng bạn sẽ gặp vấn đề tương tự với bất kỳ ứng dụng bảng điều khiển nào khác.

Có một ứng dụng phần mềm miễn phí windows có tên là "bat to exe" mà bạn có thể sử dụng để tạo tệp exe từ tệp .bat có dòng lệnh apropitable trong đó. bạn cũng có thể nhúng tệp jar vào exe với ứng dụng này và làm cho nó sạch sẽ khi nó chạy xong, vì vậy đây có thể là một giải pháp thanh lịch hơn.


11

Đầu tiên đặt đường dẫn trên cmd (dấu nhắc lệnh):

set path="C:\Program Files\Java\jre6\bin"

sau đó gõ

java -jar yourProgramname.jar 

9

Trong Windows XP *, bạn chỉ cần 2 lệnh shell :

   C:\>ftype myjarfile="C:\JRE1.6\bin\javaw.exe" -jar "%1" %* 
   C:\>assoc .jar=myjarfile  

rõ ràng là sử dụng đường dẫn chính xác cho JRE và bất kỳ tên nào bạn muốn thay vì myjarfile.

Để chỉ kiểm tra các cài đặt hiện tại:

   C:\>assoc .jar  
   C:\>ftype jarfile  

lần này sử dụng giá trị được trả về bởi lệnh đầu tiên, nếu có, thay vì jarfile.

* không được thử nghiệm với Windows 7


1
Một người dùng ẩn danh đã thử nghiệm điều này với Windows 7 (JRE 7). Họ nói rằng nó hoạt động nếu bạn chạy cmd như quản trị viên.
Jeremy Stein

Giải pháp tốt nhất trong mắt tôi. Hoạt động lên tới Windows 10. Các lệnh ftype và PGS sẽ chạy trong một cửa sổ nhắc lệnh với đặc quyền quản trị viên.
SixDoubleFiveTreeTwoOne

7

Có cách mà không yêu cầu người dùng thực hiện thay đổi trên PC của mình. Runtime.getR nb.exec () cho phép chúng ta khởi động cmd.exe và thực thi các lệnh bên trong nó. Vì vậy, chương trình java có thể tự chạy trong dấu nhắc lệnh khi người dùng nhấp vào tệp .jar.

public static void main(String[] args) throws IOException {
    if(args.length == 0) {
        Process p = Runtime.getRuntime().exec("cmd.exe /c start java -jar " + (new File(NameOfClass.class.getProtectionDomain().getCodeSource().getLocation().getPath())).getAbsolutePath() + " cmd");
    } else {
        //code to be executed
    }
}

6

Bên cạnh tất cả các đề xuất khác, có một điều khác bạn cần xem xét. Là helloworld.jar của bạn là một chương trình giao diện điều khiển? Nếu đúng như vậy, thì tôi không tin bạn sẽ có thể biến nó thành một tệp jar có thể nhấp đúp. Các chương trình điều khiển sử dụng cửa sổ shell cmd.exe thông thường cho đầu vào và đầu ra của chúng. Thông thường, jar "launcher" được liên kết với javaw.exe không tạo ra cửa sổ shell lệnh.



4

Trong regedit, mở HKEY_CLASSES_ROOT\Applications\java.exe\shell\open\command

Nhấp đúp chuột vào mặc định ở bên trái và thêm -jar giữa java.exeđường dẫn và %1đối số "".


Đây chính là nó. Cảm ơn. Tất cả những thứ khác không giúp được gì.
raedma

3

Bạn muốn kiểm tra một vài điều; nếu đây là tệp jar của riêng bạn, hãy đảm bảo bạn đã xác định Lớp chính trong tệp kê khai. Vì chúng tôi biết bạn có thể chạy nó từ dòng lệnh, điều khác cần làm là tạo một phím tắt windows và sửa đổi các thuộc tính (bạn sẽ phải nhìn xung quanh, tôi không có máy Windows để xem) để lệnh nó thực thi khi mở là lệnh java -jar mà bạn đã đề cập.

Một điều khác: nếu có gì đó không nhầm lẫn, dù sao thì nó cũng sẽ hoạt động; kiểm tra và đảm bảo rằng bạn có java được liên kết với phần mở rộng .jar.


1

Thật không may, nó không dễ dàng như vậy vì Microsoft đã loại bỏ hộp thoại liên kết tệp nâng cao trong các phiên bản Windows gần đây. - Với các phiên bản Windows mới hơn, bạn chỉ có thể chỉ định ứng dụng sẽ được sử dụng để mở tệp .jar.

Sửa lỗi mở tệp .jar trên Windows yêu cầu hai bước.

  1. Mở Bảng điều khiển và chọn "Chương trình mặc định -> Đặt liên kết". Tìm phần mở rộng .jar ( tệp JAR có thể thực thi ) ở đó và chọn Java làm chương trình mặc định để mở phần mở rộng này. Nó có thể sẽ được liệt kê là " Nền tảng Java (SE) ". Một sự thay thế nhanh hơn có lẽ là nhấp chuột phải vào tệp .jar, sau đó thay đổi chương trình liên quan bằng cách nhấp vào nút "Thay đổi ...".

  2. Bây giờ hãy mở regedit và mở HKEY_CLASSES_ROOT\jarfile\shell\open\commandkhóa. May mắn cho chúng tôi, chúng tôi có thể chỉ định các tham số ở đó cho (Default)giá trị. Trên hệ thống Windows của tôi, nó trông giống như: C:\app\32\jre7\bin\javaw.exe" -jar "%1" %*nhưng trong hầu hết các trường hợp, đó là chuỗi sau:C:\Program Files\Java\jre7\bin\javaw.exe" -jar "%1" %*

GHI CHÚ:

  • Không sử dụng java.exeở đó vì nó sẽ mở cửa sổ vỏ.
  • Công cụ jarfix được đề cập trong chủ đề này rất có thể không làm gì khác hơn là sửa đổi sổ đăng ký cho bạn. Tôi thích phương pháp thay đổi sổ đăng ký thủ công, vì điều đó ngụ ý rằng quản trị viên hệ thống có thể "đẩy" thay đổi sổ đăng ký đến tất cả các máy trạm trong mạng.

1

Tôi gặp vấn đề tương tự trong Windows 10. Tôi đã khắc phục bằng cách sử dụng nhấp chuột vào " helloworld.jar " và truy cập vào các thuộc tính và nhấp vào nút thay đổi trong "Mở bằng:" và chọn " Tìm ứng dụng khác trên PC này ". Trong hộp thoại " Mở bằng ... ", đi đến vị trí thư mục Java trên PC của bạn và mở thư mục jdk tương ứng, sau đó mở thư mục bin và chọn " javaw.exe " từ đó. Sau đó, lần tới " helloworld.jar " của bạn sẽ mở theo cách thông thường.

Ví dụ về vị trí java thông thường: " C: \ Program Files (x86) \ Java \ jdk1.8.0_111 \ bin ".


1

Một cách khác để chạy các tệp jar bằng một lần nhấp / nhấp đúp, là thêm "-jar" vào tên của tệp. Ví dụ: bạn sẽ đổi tên tệp MyJar.jarthành -jar MyJar.jar.

Bạn phải có các .classtập tin liên quan đến java.exe, tất nhiên. Điều này có thể không hoạt động trong mọi trường hợp, nhưng nó đã làm việc nhiều lần nhất đối với tôi.


1

PreScript : Nếu lời nhắc của bạn xuất hiện và biến mất ngay lập tức, lý do là vì chương trình của bạn được thực thi và tự động tắt. Hãy thử đặt một máy quét vào cuối để chấm dứt và nó sẽ giữ lời nhắc của bạn chờ đầu vào trước khi chấm dứt. (Hoặc có thể sử dụng độ trễ)

Đã ở trong tình huống tương tự, khi chạy .jar từ cmd vẫn hoạt động tốt, nhưng nhấp đúp không làm gì cả.

Giải pháp: Mở bất kỳ trình soạn thảo văn bản nào và viết dòng lệnh: java -jar example.jar Lưu tệp dưới dạng tệp .bat. Chạy tập tin bat này để có được đầu ra cần thiết.

Tiến lên một bước, bạn có thể chuyển đổi tập tin bat này thành tập tin exe bằng công cụ GUI đơn giản như Bat To exe Converter.

Bây giờ bạn có thể chia sẻ .jar của mình dưới dạng phân phối trong tệp .exe mà bất kỳ ai cũng có thể sử dụng chỉ cần đảm bảo rằng bạn giữ tất cả các tệp cùng nhau. (Đặc biệt là tệp .jar và .bat gây ra .bat chỉ là một dấu nhắc cmd) (Cảm giác hợp lý như thế nào)

Tôi còn khá mới để phát triển và học hỏi nhiều. Xin thứ lỗi cho bất kỳ sai lầm nếu cam kết. Đề nghị được chào đón.


1

sử dụng .bat tập tin:

Đặt lệnh của bạn trong một tập tin .bat. ở đây, lệnh của bạn sẽ làjava -jar path\yourJarName.jar . Something like: java -jar C:\workspace\myApplication.jar

Lưu nó và nhấp đúp chuột vào tập tin bat để chạy jar của bạn. Tên tập tin của bạn sẽ giống nhưfileName.bat


0

Nếu bạn sử dụng nhật thực để tạo các tệp java của mình, bạn có thể chọn xuất nó dưới dạng tệp jar có thể chạy được. Tôi đã làm điều này với các chương trình của tôi và tôi chỉ có thể nhấp vào bình và nó sẽ chạy như vậy. Điều này sẽ hoạt động trên cả hai cửa sổ, cũng như os x.


Dường như không được đảm bảo để làm việc, theo câu hỏi
doubleDown

0

Làm một start.bat là điều duy nhất làm việc cho tôi.

mở một tài liệu văn bản và nhập. java -jar bất cứ thứ gì của bạn được gọi là .jar

lưu dưới dạng start.bat trong cùng thư mục với tệp .jar mà bạn muốn thực thi. và sau đó chạy. con dơi


0

Nếu bạn cần chạy tệp jar bằng cách nhấp đúp vào tệp, bạn phải tạo tệp đó dưới dạng " JAR Runnable ". bạn có thể làm điều đó một cách đơn giản với IDE của bạn.

Nếu bạn đang sử dụng nhật thực, hãy làm theo các bước sau:

    To create a new runnable JAR file in the workbench:

1.From the menu bar's File menu, select Export.
2.Expand the Java node and select Runnable JAR file. Click Next.
3.In the  Opens the Runnable JAR export wizard Runnable JAR File Specification page, select a 'Java Application' launch configuration to use to create a runnable JAR.
4.In the Export destination field, either type or click Browse to select a location for the JAR file.
5.Select an appropriate library handling strategy.
Optionally, you can also create an ANT script to quickly regenerate a previously created runnable JAR file.

có thể tìm thêm thông tin trên Trang trợ giúp của Eclipse: LINK


0

Có nhiều phương pháp để chạy tệp .jar trên windows. Một trong số họ đang sử dụng dấu nhắc lệnh.

Các bước:

  1. Mở dấu nhắc lệnh (Chạy với tư cách quản trị viên)
  2. Bây giờ hãy viết lệnh "cd \" cho thư mục gốc
  3. Nhập "java jar filename.jar" Lưu ý: bạn cũng có thể sử dụng bất kỳ ứng dụng bên thứ ba nào như WinRAR, jarfix, v.v.


0

Tạo .battập tin:

start javaw -jar %*

Và chọn ứng dụng mặc định để mở .jarvới .battập tin này .

Nó sẽ đóng cmdkhi bắt đầu .jartập tin của bạn .


0

Để biên dịch:

javac  -cp ".;./mysql-connector-java-5.0.8.jar;mybatis-3.0.1.jar;ibatis-2.3.0.677.jar" MainStart.java

Để chạy:

java  -cp ".;./mysql-connector-java-5.0.8.jar;mybatis-3.0.1.jar;ibatis-2.3.0.677.jar" MainStart

0

Trên thực tế, tôi cũng gặp phải vấn đề này, tôi đã khắc phục bằng cách tạo một trình chạy .bat cho tệp jar của tôi

ở đây là mã:

class FileHandler{
   public static File create_CMD_Rnner(){
      int exitCode = -1625348952;
      try{
           File runner = new File(Main.batName);
           PrintWriter printer = new PrintWriter(runner);
           printer.println("@echo off");
           printer.println("title " + Main.applicationTitle);
           printer.println("java -jar " + Main.jarName + " " + Main.startCode );
           printer.println("PAUSE");
           printer.flush();
           printer.close();
           return runner;
       }catch(Exception e){
           System.err.println("Coudln't create a runner bat \n exit code: " + exitCode);
           System.exit(exitCode);
           return null;
       }
   }
}



Sau đó, trong lớp ứng dụng chính của bạn làm điều này:

public class Main{
    static String jarName = "application.jar";
    static String applicationTitle = "java Application";
    static String startCode = "javaIsTheBest";
    static String batName = "_.bat";


    public static void main(String args[]) throws Exception{
        if(args.length == 0 || !args[0].equals(startCode)) {
            Desktop.getDesktop().open(FilesHandler.create_CMD_Rnner());
            System.exit(0);
        }else{
            //just in case you wanted to hide the bat
            deleteRunner();
            // Congratulations now you are running in a cmd window ... do whatever you want
            //......
            System.out.println("i Am Running in CMD");
            //......
            Thread.sleep(84600);
        }
    }


    public static void deleteRunner(){
        File batRunner = new File(batName);
        if(batRunner.exists()) batRunner.delete();
    }
}


Xin lưu ý rằng

  1. mã này (mã của tôi) chỉ hoạt động với tệp jar, không phải tệp lớp.

  2. tệp jar phải có cùng tên với Chuỗi "jarName" là lớp Chính

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.