ฉันมี JAR ไฟล์ที่ชื่อว่าhelloworld.jar เพื่อที่จะเรียกใช้ฉันกำลังดำเนินการคำสั่งต่อไปนี้ในหน้าต่างบรรทัดคำสั่ง:
java -jar helloworld.jar
ใช้งานได้ดี แต่ฉันจะรันด้วยดับเบิลคลิกแทนได้อย่างไร ฉันจำเป็นต้องติดตั้งซอฟต์แวร์ใด ๆ หรือไม่?
ฉันมี JAR ไฟล์ที่ชื่อว่าhelloworld.jar เพื่อที่จะเรียกใช้ฉันกำลังดำเนินการคำสั่งต่อไปนี้ในหน้าต่างบรรทัดคำสั่ง:
java -jar helloworld.jar
ใช้งานได้ดี แต่ฉันจะรันด้วยดับเบิลคลิกแทนได้อย่างไร ฉันจำเป็นต้องติดตั้งซอฟต์แวร์ใด ๆ หรือไม่?
คำตอบ:
เส้นทางที่ง่ายที่สุดอาจจะอัพเกรดหรือติดตั้ง Java Runtime Environment (JRE) อีกครั้ง
หรือสิ่งนี้:
C:\Program Files\Java\j2re1.4.2_04\bin\javaw.exe" -jar "%1" %
(หมายเหตุ: ส่วนที่ขึ้นต้นด้วย 'javaw' จะต้องเป็นอย่างนั้นส่วนอื่น ๆ ของชื่อเส้นทางสามารถแตกต่างกันไปขึ้นอยู่กับรุ่นของ Java ที่คุณใช้ ) จากนั้นกดปุ่ม OK จนกระทั่งปิดกล่องโต้ตอบทั้งหมดซึ่งถูกขโมยมาจากที่นี่: http://windowstipoftheday.blogspot.com/2005/10/setting-jar-file-association.html
ใน Windows Vista หรือ Windows 7 ตัวแก้ไขการเชื่อมโยงไฟล์ด้วยตนเองได้ถูกลบออก
วิธีที่ง่ายที่สุดคือเรียกใช้Jarfixเครื่องมือฟรีแวร์ขนาดเล็ก แต่ทรงพลัง เพียงแค่เรียกใช้และแอป Java ของคุณกลับมา ... ดับเบิลคลิกได้อีกครั้ง
หากคุณต้องการแจกจ่ายไฟล์. jar ของคุณและทำให้สามารถเรียกใช้งานได้ที่คอมพิวเตอร์ Windows ของผู้อื่นคุณสามารถสร้างไฟล์. bat แบบง่าย ๆ ได้ในหน้าจอพร้อมรับคำสั่ง:
java -jar MyJavaTool.jar
และวางไฟล์. bat ไว้ในไดเรกทอรีเดียวกับไฟล์. jar ของคุณ
หากคุณมีไฟล์ jar ชื่อตัวอย่างให้ทำตามกฎเหล่านี้:
notepad.exe
java -jar Example.jar
.bat
.jar
ไฟล์.jar
ไฟล์ของคุณผลข้างเคียงที่น่าสนใจของสิ่งนี้ทำให้เกิดปัญหาเมื่อเริ่มต้นไฟล์ jar ที่รันได้ในพรอมต์คำสั่ง
หากคุณลอง (พร้อมรับคำสั่ง):
jarfile.jar parameter
ไม่มีความปิติยินดีเนื่องจากสิ่งนี้ถูกแปลเป็นสิ่งต่อไปนี้ (ซึ่งไม่ได้ผล):
javaw.exe -jar jarfile.jar parameter
อย่างไรก็ตามคำสั่งต่อไปนี้ใช้งานได้:
java.exe -jar jarfile.jar parameter
หากคุณเปลี่ยนการเชื่อมโยงในตัวจัดการไฟล์ตามที่อธิบายไว้ข้างต้นเป็น:
"C:\Program Files\Java\j2re1.4.2_04\bin\java.exe" -jar "%1" %*
จากนั้นคุณสามารถพิมพ์:
jarfile.jar parameter
ใน command prompt และตอนนี้มันจะทำงาน!
แก้ไข: (อย่างไรก็ตามจากนั้นคุณจะได้รับหน้าต่างคอนโซลสีดำเมื่อคุณเรียกใช้แอพพลิเคชั่น Java แบบไม่มีคอนโซล
หากคุณรันไฟล์ jar เหล่านี้โดยดับเบิลคลิกใน windows จะไม่มีพารามิเตอร์ใดถูกส่งผ่านเพื่อให้โค้ด Java ของคุณจำเป็นต้องจัดการกับข้อยกเว้นสแต็กโอเวอร์โฟลว์และรวมฟังก์ชัน "กดปุ่ม" ที่ท้ายมิฉะนั้นหน้าต่างจะหายไป
ในการส่งผ่านพารามิเตอร์ใน windows คุณต้องสร้างทางลัดไปยังไฟล์ jar ซึ่งรวมถึงพารามิเตอร์ในบรรทัดเป้าหมาย (คลิกขวาที่ทางลัดและเลือกคุณสมบัติ) คุณไม่สามารถเพิ่มพารามิเตอร์ลงในไอคอนไฟล์ jar ในตัวนี้ ทาง
ไม่มีวิธีแก้ไขปัญหาที่สอดคล้องกันที่นี่ แต่คุณจะมีปัญหาเดียวกันกับโปรแกรมประยุกต์คอนโซลอื่น ๆ
มีแอพพลิเคชั่นฟรีแวร์ windows ชื่อ "bat to exe" ซึ่งคุณสามารถใช้เพื่อสร้างไฟล์ exe จากไฟล์. bat พร้อมกับบรรทัดคำสั่ง apropriate คุณสามารถฝังไฟล์ jar ใน exe ด้วยแอพพลิเคชั่นนี้และทำให้มันสะอาดขึ้นเมื่อมันเสร็จสิ้นการทำงานดังนั้นนี่อาจเป็นทางออกที่ดีกว่า
ชุดเส้นทางแรกใน cmd (พร้อมรับคำสั่ง):
set path="C:\Program Files\Java\jre6\bin"
จากนั้นพิมพ์
java -jar yourProgramname.jar
ใน Windows XP *คุณต้องมีคำสั่งเชลล์เพียง 2 คำสั่ง:
C:\>ftype myjarfile="C:\JRE1.6\bin\javaw.exe" -jar "%1" %*
C:\>assoc .jar=myjarfile
เห็นได้ชัดว่าใช้เส้นทางที่ถูกต้องสำหรับ JRE และชื่อใด ๆ ที่คุณต้องการแทน myjarfile
และชื่อที่คุณต้องการใดแทน
หากต้องการตรวจสอบการตั้งค่าปัจจุบัน:
C:\>assoc .jar
C:\>ftype jarfile
ครั้งนี้ใช้ค่าที่ส่งคืนโดยคำสั่งแรกถ้ามีแทนที่จะเป็น jarfile
แทน
* ไม่ได้ทดสอบกับ Windows 7
มีวิธีโดยไม่ต้องให้ผู้ใช้ทำการเปลี่ยนแปลงบนพีซีของเขา Runtime.getRuntime.exec () ช่วยให้เราสามารถเริ่มต้น cmd.exe และดำเนินการคำสั่งภายใน ดังนั้นจึงเป็นไปได้ที่โปรแกรมจาวาจะรันตัวเองใน command prompt เมื่อผู้ใช้คลิกไฟล์. 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
}
}
นอกจากคำแนะนำอื่น ๆ ทั้งหมดแล้วยังมีอีกเรื่องหนึ่งที่คุณต้องพิจารณา helloworld.jar เป็นโปรแกรมคอนโซลหรือไม่? ถ้าเป็นเช่นนั้นฉันไม่เชื่อว่าคุณจะสามารถทำให้เป็นไฟล์ jar แบบดับเบิลคลิกได้ โปรแกรมคอนโซลใช้หน้าต่างเชลล์ cmd.exe ปกติสำหรับอินพุตและเอาต์พุต โดยปกติ jar "ตัวเรียกใช้งาน" จะถูกผูกไว้กับ javaw.exe ซึ่งไม่ได้สร้างหน้าต่างเชลล์คำสั่ง
ฉันใช้ Windows 7 x64 และไม่สามารถใช้การแก้ไขเหล่านี้ได้
อันนี้เหมาะกับฉันหลังจากนั้น:
http://thepanz.netsons.org/post/windows7-jar-file-association-broken-with-nokia-ovi
มีไฟล์เก็บถาวรซึ่งคุณสามารถดาวน์โหลดที่มีไฟล์. bat เพื่อเรียกใช้ได้ แต่ตรวจสอบเส้นทางของ javaw.exe จริง !!!!
ใน regedit เปิด HKEY_CLASSES_ROOT\Applications\java.exe\shell\open\command
ดับเบิลคลิกที่ค่าเริ่มต้นทางด้านซ้ายและเพิ่ม -jar ระหว่างjava.exe
เส้นทางและ%1
อาร์กิวเมนต์ ""
คุณต้องการตรวจสอบสองสิ่ง; หากนี่คือไฟล์ jar ของคุณเองตรวจสอบให้แน่ใจว่าคุณได้กำหนด Main-class ในไฟล์ Manifest เนื่องจากเรารู้ว่าคุณสามารถเรียกใช้จากบรรทัดคำสั่งสิ่งอื่นที่ต้องทำคือสร้างทางลัดของ Windows และแก้ไขคุณสมบัติ (คุณต้องมองไปรอบ ๆ ฉันไม่มีเครื่อง Windows ให้ดู) คำสั่งที่รันบน open คือคำสั่ง java -jar ที่คุณกล่าวถึง
สิ่งอื่น ๆ : หากมีอะไรไม่สับสนก็ควรทำงานต่อไป; ตรวจสอบและตรวจสอบให้แน่ใจว่าคุณมี java ที่เชื่อมโยงกับ. jar ส่วนขยาย
น่าเสียดายที่มันไม่ง่ายอย่างที่ Microsoft ได้ลบการเชื่อมโยงไฟล์ขั้นสูงใน Windows รุ่นล่าสุด - สำหรับ Windows รุ่นใหม่กว่าคุณสามารถระบุแอปพลิเคชันที่จะใช้เปิดไฟล์. jar เท่านั้น
การแก้ไขการเปิดไฟล์. jar บน Windows ต้องใช้สองขั้นตอน
เปิดแผงควบคุมแล้วเลือก "โปรแกรมเริ่มต้น -> ตั้งค่าสมาคม" ค้นหาส่วนขยาย. jar ( ไฟล์ JAR แบบปฏิบัติการ ) ที่นั่นและเลือก Java เป็นโปรแกรมเริ่มต้นเพื่อเปิดส่วนขยายนี้ มันอาจจะถูกระบุว่าเป็น " Java Platform (SE) " อาจเป็นทางเลือกที่เร็วกว่านั้นคือคลิกขวาที่ไฟล์. jar จากนั้นเปลี่ยนโปรแกรมที่เกี่ยวข้องโดยคลิกที่ปุ่ม "เปลี่ยน ... "
ตอนนี้เปิด regedit และเปิดHKEY_CLASSES_ROOT\jarfile\shell\open\command
กุญแจ โชคดีสำหรับเราเราอาจระบุพารามิเตอร์ที่นั่นสำหรับ(Default)
ค่า ในระบบ Windows ของฉันดูเหมือนว่า: C:\app\32\jre7\bin\javaw.exe" -jar "%1" %*
แต่ในกรณีส่วนใหญ่มันเป็นสตริงต่อไปนี้:C:\Program Files\Java\jre7\bin\javaw.exe" -jar "%1" %*
หมายเหตุ:
java.exe
ตรงนั้นเพราะมันจะเปิดหน้าต่างเชลล์ฉันมีปัญหาเดียวกันใน Windows 10 ฉันแก้ไขโดยใช้righ-clickที่ " helloworld.jar " และไปที่คุณสมบัติและคลิกที่ปุ่มเปลี่ยนภายใต้ "เปิดด้วย:" และเลือก " ค้นหาแอปอื่นบนพีซีเครื่องนี้ " ในกล่องโต้ตอบ" เปิดด้วย ... " ไปที่ตำแหน่งโฟลเดอร์ Java บนพีซีของคุณและเปิดโฟลเดอร์ jdk ที่เกี่ยวข้องจากนั้นเปิดโฟลเดอร์binและเลือก " javaw.exe " จากที่นั่น จากนั้นในครั้งต่อไปที่ " helloworld.jar " ของคุณจะเปิดตามปกติ
ตัวอย่างตำแหน่ง Java ปกติ: " C: \ Program Files (x86) \ Java \ jdk1.8.0_111 \ bin "
อีกวิธีหนึ่งในการรันไฟล์ jar ด้วยการคลิก / ดับเบิลคลิกคือการเติม "-jar" ให้กับชื่อของไฟล์ ตัวอย่างเช่นคุณจะเปลี่ยนชื่อไฟล์MyJar.jar
เป็น-jar MyJar.jar
ไป
คุณต้องมี.class
ไฟล์ที่เกี่ยวข้องกับjava.exe
ของหลักสูตร สิ่งนี้อาจไม่สามารถใช้งานได้ในทุกกรณี แต่ใช้งานได้สำหรับฉันเกือบทุกครั้ง
prescript : หากพรอมต์ของคุณปรากฏขึ้นและหายไปทันทีเหตุผลที่เป็นเช่นนั้นก็คือโปรแกรมของคุณถูกเรียกใช้และปิดอัตโนมัติ ลองวางสแกนเนอร์ในที่สุดเพื่อยุติและมันจะทำให้การแจ้งเตือนของคุณรอการป้อนข้อมูลก่อนที่จะยุติ (หรืออาจใช้การหน่วงเวลา)
อยู่ในสถานการณ์เดียวกันซึ่งการรัน. jar จาก cmd ทำงานได้ดี แต่การคลิกสองครั้งไม่ได้ทำอะไรเลย
การแก้ไข: เปิดโปรแกรมแก้ไขข้อความใด ๆ และเขียนบรรทัดคำสั่ง: java -jar Example.jar บันทึกไฟล์เป็นไฟล์. bat รันไฟล์ bat นี้เพื่อรับเอาต์พุตที่ต้องการ
คุณสามารถแปลงไฟล์ค้างคาวนี้เป็นไฟล์ exe โดยใช้เครื่องมือ GUI อย่างง่ายเช่น Bat To Exe Converter
ตอนนี้คุณสามารถแชร์. jar ของคุณเป็นการกระจายในไฟล์. exe ซึ่งใคร ๆ ก็สามารถใช้เพียงแค่ทำให้แน่ใจว่าคุณเก็บไฟล์ทั้งหมดไว้ด้วยกัน (โดยเฉพาะไฟล์. jar และ. bat สาเหตุ. bat เป็นเพียงพรอมต์คำสั่ง) (ความรู้สึกมันมีเหตุผล)
ฉันค่อนข้างใหม่สำหรับการพัฒนาและการเรียนรู้มากมาย โปรดแก้ตัวหากมีข้อผิดพลาดเกิดขึ้น ข้อเสนอแนะยินดีต้อนรับ
ใช้
.bat
ไฟล์:
วางคำสั่งของคุณในไฟล์. bat java -jar path\yourJarName.jar
ที่นี่คำสั่งของคุณจะ
Something like: java -jar C:\workspace\myApplication.jar
บันทึกและดับเบิลคลิกที่ไฟล์ bat เพื่อเรียกใช้ jar ของคุณ ชื่อไฟล์ของคุณจะเป็นอย่างไรfileName.bat
หากคุณใช้ eclipse เพื่อสร้างไฟล์ java ของคุณคุณสามารถเลือกที่จะเอ็กซ์พอร์ตเป็นไฟล์ jar ที่รันได้ ฉันทำสิ่งนี้กับโปรแกรมของฉันและฉันสามารถคลิกที่ไหและมันจะทำงานแบบนั้น สิ่งนี้จะทำงานได้ทั้งบน windows และ os x
การสร้าง start.bat เป็นสิ่งเดียวที่ใช้ได้ผลสำหรับฉัน
เปิดเอกสารข้อความและป้อน java -jar สิ่งที่คุณเรียกว่า . jar
บันทึกเป็น start.bat ในโฟลเดอร์เดียวกับไฟล์. jar ที่คุณต้องการดำเนินการ แล้วเรียกใช้ ค้างคาว
หากคุณต้องการเรียกใช้ไฟล์ jar โดยดับเบิลคลิกคุณต้องสร้างมันเป็น " Runnable JAR " คุณสามารถทำได้ด้วย IDE ของคุณ
หากคุณกำลังใช้ eclipse ให้ทำตามขั้นตอนเหล่านี้:
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.
ข้อมูลเพิ่มเติมสามารถดูได้ที่ Eclipse help Page: LINK
มีหลายวิธีในการเรียกใช้ไฟล์. jar บน windows หนึ่งในนั้นใช้พรอมต์คำสั่ง
ขั้นตอน:
ขั้นตอน:
1. ) ค้นหา Java SE Runtime Environment บน Google: https://www.google.com/search?q=Java+SE+Runtime+Environment
2. ) ติดตั้งเวอร์ชั่นที่เหมาะสมลงในคอมพิวเตอร์ของคุณ
สร้าง.bat
ไฟล์:
start javaw -jar %*
และเลือกแอปเริ่มต้นเพื่อเปิด.jar
ด้วยสิ่งนี้.bat
ไฟล์นี้
มันจะปิดcmd
เมื่อเริ่ม.jar
ไฟล์ของคุณ
สำหรับการรวบรวม:
javac -cp ".;./mysql-connector-java-5.0.8.jar;mybatis-3.0.1.jar;ibatis-2.3.0.677.jar" MainStart.java
สำหรับการวิ่ง:
java -cp ".;./mysql-connector-java-5.0.8.jar;mybatis-3.0.1.jar;ibatis-2.3.0.677.jar" MainStart
ที่จริงแล้วฉันก็ประสบปัญหานี้เช่นกันฉันได้รับมันโดยการสร้าง. bat สำหรับไฟล์ jar ของฉัน
ที่นี่คือรหัส:
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;
}
}
}
จากนั้นในคลาสแอปพลิเคชันหลักของคุณให้ทำสิ่งนี้:
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();
}
}
รหัสนี้ (รหัสของฉัน) ใช้งานได้กับไฟล์ jar เท่านั้นไม่ใช่ไฟล์คลาส
ไฟล์ jar ต้องมีชื่อเดียวกันกับสตริง "jarName" เป็นคลาสหลัก