ฉันจะแปลงโปรแกรม Java เป็นไฟล์. exe ได้อย่างไร [ปิด]


500

หากฉันมีไฟล์ต้นฉบับ Java (* .java) หรือไฟล์คลาส (* .class) ฉันจะแปลงเป็นไฟล์. exe ได้อย่างไร

ฉันยังต้องการตัวติดตั้งสำหรับโปรแกรมของฉัน


1
แฮ็ปง่ายสำหรับแอปเพล็ต: เขียนรหัส C ด้วยหลักและการเรียกใช้ฟังก์ชัน "ระบบ" เช่นระบบ ("appletviewer java_src_file");
Madhusoodan P

1
. exe จะทำงานในระบบ windows ที่ไม่มี JRE หรือไม่
Arpit Agarwal

เพิ่งจะเสร็จสมบูรณ์ (ไม่ได้ลองด้วยตัวเองเพราะเราจำเป็นต้องใช้ wrapper exe ไม่ใช่ตัวติดตั้ง): สามารถสร้างแพ็คเกจตัวติดตั้งโดยใช้ javapackager (ดูdocs.oracle.com/javase/8/docs/technotes/guides/deploy/ ...... ) . ในการสร้างตัวติดตั้ง EXE หรือ MSI คุณจะต้องดาวน์โหลดและติดตั้ง Inno Setup หรือ WiX เพิ่มเติม
2560

อาจเป็นNSISก็ได้เช่นกัน nsis.sourceforge.net/Java_Launcher
baris.aydinoz

คำตอบ:


324

javapackager

เครื่องมือ Java Packager คอมไพล์แพคเกจและเตรียมแอปพลิเคชัน Java และ JavaFX สำหรับการแจกจ่าย คำสั่ง javapackager เป็นเวอร์ชันบรรทัดคำสั่ง

- เอกสารของ Oracle

javapackagerเรือยูทิลิตี้กับ JDK มันสามารถสร้างไฟล์. exe ด้วยการ-native exeตั้งค่าสถานะท่ามกลางสิ่งอื่น ๆ

WinRun4J

WinRun4j เป็นตัวเรียกใช้จาวาสำหรับ windows มันเป็นทางเลือกแทน javaw.exe และให้ประโยชน์ดังต่อไปนี้:

  • ใช้ไฟล์ INI สำหรับการระบุ classpath, main class, vm args, program args
  • ชื่อปฏิบัติการแบบกำหนดเองที่ปรากฏในตัวจัดการงาน
  • JVM เพิ่มเติมมีไว้เพื่อการใช้หน่วยความจำที่ยืดหยุ่นมากขึ้น
  • ไอคอนทดแทนในตัวสำหรับไอคอนที่กำหนดเอง
  • [มีหัวข้อย่อยเพิ่มเติมติดตาม]

- หน้าเว็บของ WinRun4J

WinRun4J เป็นโปรแกรมโอเพ่นซอร์ส แต่ก็มีหลายคุณสมบัติ

packr

แพ็กเกจ JAR สินทรัพย์และ JVM ของคุณสำหรับการเผยแพร่บน Windows, Linux และ Mac OS X เพิ่มไฟล์เรียกทำงานเนทีฟเพื่อให้ดูเหมือนแอปเนทีฟ Packr เหมาะที่สุดสำหรับการใช้งาน GUI

- packr README

packr เป็นเครื่องมือโอเพนซอร์สอื่น

JSmooth

JSmooth เป็น Wrapper ที่ปฏิบัติการได้ของ Java มันสร้างตัวเรียกใช้ Windows ดั้งเดิม (.exe มาตรฐาน) สำหรับแอปพลิเคชัน Java ของคุณ มันทำให้การปรับใช้จาวาเป็นไปอย่างราบรื่นและเป็นมิตรกับผู้ใช้เนื่องจากสามารถค้นหา Java VM ที่ติดตั้งด้วยตัวเอง

- เว็บไซต์ของ JSmooth

JSmooth เป็นโอเพ่นซอร์สและมีคุณสมบัติ แต่มันเก่ามาก รุ่นล่าสุดคือในปี 2007

JexePack

JexePackเป็นเครื่องมือบรรทัดคำสั่ง (ยอดเยี่ยมสำหรับการสร้างสคริปต์อัตโนมัติ) ที่ช่วยให้คุณจัดทำแพ็กเกจแอปพลิเคชัน Java ของคุณ (ไฟล์คลาส) ทางเลือกพร้อมกับทรัพยากร (เช่น GIF / JPG / TXT / etc) ลงในEXE Windows 32 บิตที่บีบอัดซึ่งทำงานโดยใช้ Java Runtime Environment ของ Sun สนับสนุนทั้งแอปพลิเคชันคอนโซลและหน้าต่าง

- เว็บไซต์ของ JexePack

JexePack เป็นรุ่นทดลองใช้ การชำระเงินเป็นสิ่งจำเป็นสำหรับการใช้งานจริงและไฟล์ exe ที่สร้างด้วยเครื่องมือนี้จะแสดง "การแจ้งเตือน" โดยไม่ต้องชำระเงิน นอกจากนี้รุ่นล่าสุดคือในปี 2013

InstallAnywhere

InstallAnywhere ช่วยให้นักพัฒนาซอฟต์แวร์สามารถสร้างซอฟต์แวร์ติดตั้งมืออาชีพสำหรับทุกแพลตฟอร์มได้อย่างง่ายดาย ด้วย InstallAnywhere คุณจะปรับตัวเข้ากับการเปลี่ยนแปลงของอุตสาหกรรมได้อย่างรวดเร็วเข้าถึงตลาดได้เร็วขึ้นและมอบประสบการณ์ที่น่าดึงดูดให้กับลูกค้า และรู้จุดอ่อนขององค์ประกอบ OSS ของโครงการของคุณก่อนจัดส่ง

- เว็บไซต์ของ InstallAnywhere

InstallAnywhere เป็นแพคเกจการค้า / องค์กรที่สร้างตัวติดตั้งสำหรับโปรแกรมที่ใช้ Java มันอาจจะสามารถสร้างไฟล์. exe ได้

ไฟล์ JAR ที่ปฏิบัติการได้

ในฐานะที่เป็นทางเลือกให้กับไฟล์ exe คุณสามารถสร้างไฟล์ JAR ที่จะทำงานโดยอัตโนมัติเมื่อคลิกสองครั้งโดยการเพิ่มจุดเริ่มต้นที่จะประจักษ์ขวด


สำหรับข้อมูลเพิ่มเติม

แหล่งข้อมูลที่ดีเยี่ยมในหัวข้อนี้คือบทความของ Excelsior "การแปลง Java เป็น EXE - ทำไม, เมื่อ, เมื่อไม่และอย่างไร "

ดูบทความที่เกี่ยวข้อง " เครื่องมือแปลง JAR ที่ดีที่สุดสำหรับ EXE ฟรีและเชิงพาณิชย์ "


ใช้ eclipse และ Jsmooth ดีกว่า ทำตามขั้นตอนเหล่านี้regilanj.wordpress.com/2017/11/19/…
Maria Irudaya Regilan J

สิ่งเหล่านี้จะใช้ได้กับสถานการณ์ของฉันหรือไม่ stackoverflow.com/questions/56674075/...
gunslingor

ลองสิ่งนี้: javaexe.free.fr/html/en/JavaExe.html
CamelTM

112

Launch4j

Launch4j เป็นเครื่องมือข้ามแพลตฟอร์มสำหรับห่อแอ็พพลิเคชัน Java ที่กระจายเป็น jars ใน executables เนทิฟน้ำหนักเบาของ Windows ไฟล์เรียกทำงานสามารถกำหนดค่าเพื่อค้นหาเวอร์ชัน JRE ที่แน่นอนหรือใช้บันเดิลหนึ่งชุดและสามารถตั้งค่าตัวเลือกรันไทม์ได้เช่นขนาดฮีปเริ่มต้น / สูงสุด wrapper ยังมอบประสบการณ์การใช้งานที่ดีขึ้นผ่านไอคอนแอปพลิเคชันหน้าจอสแปลช pre-JRE ดั้งเดิมชื่อกระบวนการที่กำหนดเองและหน้าดาวน์โหลด Java ในกรณีที่ไม่พบ JRE ที่เหมาะสม

- เว็บไซต์ของ Launch4j


35

อัปเดต: GCJ ตายแล้ว มันถูกลบออกอย่างเป็นทางการจากโครงการ GCC ในปี 2559 แม้ก่อนหน้านั้นจะถูกทิ้งร้างเป็นเวลาเจ็ดปีและไม่ว่าในกรณีใด ๆ ก็ไม่เคยสมบูรณ์เพียงพอที่จะใช้เป็นทางเลือก Java ที่ใช้งานได้จริง

ไปหาคอมไพเลอร์ Java AOT อื่น

GCJ: GNU Compiler สำหรับ Javaสามารถรวบรวมซอร์สโค้ด Java เป็นรหัสเครื่องดั้งเดิมรวมถึงไฟล์ปฏิบัติการ Windows

แม้ว่าจะไม่ใช่ทุกสิ่งใน Java ที่ได้รับการสนับสนุนภายใต้ GCJ โดยเฉพาะอย่างยิ่งคอมโพเนนต์ GUI (ดู ที่ Java API ใดที่สนับสนุนอะไรบ้างมีการสนับสนุนอย่างไรคำถามจากคำถามที่พบบ่อย ) ฉันไม่ได้ใช้ GCJ มากนัก แต่จากการทดสอบที่ จำกัด ที่ฉันทำกับแอปพลิเคชันคอนโซลดูเหมือนว่าใช้ได้

ข้อเสียอย่างหนึ่งของการใช้ GCJ เพื่อสร้างไฟล์ปฏิบัติการแบบสแตนด์อโลนคือขนาดของ EXE ที่ได้นั้นอาจมีขนาดใหญ่มาก มีอยู่ครั้งหนึ่งที่ฉันรวบรวมแอปพลิเคชั่นคอนโซลเล็ก ๆ น้อย ๆ ใน GCJ และผลที่ได้คือปฏิบัติการประมาณ 1 MB (อาจมีหลายวิธีที่ฉันไม่รู้ตัวเลือกอื่นอาจเป็นโปรแกรมบีบอัดที่ปฏิบัติการได้)

ในแง่ของตัวติดตั้งโอเพ่นซอร์สNullsoft Scriptable Install Systemเป็นตัวติดตั้งแบบสคริปต์ได้ หากคุณอยากรู้อยากเห็นมีตัวอย่างที่ผู้ใช้สนับสนุนเกี่ยวกับวิธีการตรวจสอบสถานะของ JRE และติดตั้งโดยอัตโนมัติหากไม่ได้ติดตั้ง JRE ที่จำเป็น (เพื่อให้คุณรู้ว่าฉันไม่เคยใช้ NSIS มาก่อน)

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการใช้ NSIS สำหรับการติดตั้งแอปพลิเคชัน Java โปรดดูคำตอบของฉันสำหรับคำถาม " วิธีที่ดีที่สุดในการเผยแพร่แอปพลิเคชัน Java คืออะไร "


2
โครงการตายจริงแล้วอย่างที่ฉันเห็น ไม่มีข่าวในหน้าหลัก
Vladislav Rastrusny

การพัฒนา GNU Java ได้ย้ายไปที่ OpenJDK ค่อนข้างมากเนื่องจากแหล่งที่ไม่ใช่ของ Oracle ไม่สามารถเข้าถึง TCK เพื่อตรวจสอบความถูกต้องได้
Thorbjørn Ravn Andersen

25

คุณสามารถสร้างไฟล์แบตช์ด้วยรหัสต่อไปนี้:

start javaw -jar JarFile.jar

และแปลง. bat เป็น. exe โดยใช้ตัวแปลง. bat ใด ๆ เป็น. exe


2
wrapper ที่ดีจะนำ JRE หรือติดตั้งถ้าจำเป็นและจัดการกับสถานการณ์ที่ผิดพลาด
Thorbjørn Ravn Andersen

16

เรากำลังใช้Install4Jเพื่อสร้างตัวติดตั้งสำหรับสภาพแวดล้อม Windows หรือ unix

สามารถปรับแต่งได้อย่างง่ายดายจนถึงจุดที่คุณต้องการเขียนสคริปต์สำหรับการกระทำพิเศษที่ไม่สามารถทำได้ด้วยบทสนทนามาตรฐาน แต่ถึงแม้ว่าเราจะติดตั้ง windows services ด้วย แต่เราก็ใช้ส่วนประกอบมาตรฐานเท่านั้น

  • ตัวติดตั้ง + ตัวเรียกใช้
  • windows หรือ unix
  • สคริปต์ใน Java
  • งานมด
  • แผงควบคุมมาตรฐานและการทำงานที่ปรับแต่งได้มากมาย
  • เลือกที่จะรวมหรือดาวน์โหลด JRE
  • ยังสามารถเปิดบริการ windows
  • หลายภาษา

ฉันคิดว่า Launch4J มาจาก บริษัท เดียวกัน (แค่ตัวเรียกใช้ - ไม่มีตัวติดตั้ง)

PS: น่าเศร้าที่ฉันไม่ได้รับเงินสำหรับการรับรองนี้ ฉันแค่ชอบเครื่องมือนั้น


15

Java Web Startล่าสุดได้รับการปรับปรุงเพื่อให้สามารถใช้งานออฟไลน์ได้ดีรวมถึงอนุญาตให้ "ติดตั้งในเครื่อง" มันคุ้มค่าที่จะดู

แก้ไข 2018: Java Web Start ไม่ได้รวมอยู่ใน JDK ใหม่ล่าสุดอีกต่อไป Oracle กำลังมุ่งสู่การ "ปรับใช้แอปของคุณแบบโลคัลด้วย JRE ที่ล้อมรอบ" แทน


เห็นได้ชัดว่า JWS มีการรักษาความปลอดภัยที่เข้มงวดมากซึ่งต้องใช้ความพยายามมากขึ้นกว่าเดิมในการทำงาน แม้ว่ามันอาจจะมีประโยชน์สำหรับผู้ติดตั้ง
Thorbjørn Ravn Andersen

9

หากคุณจำเป็นต้องแปลงโปรแกรมทั้งหมดของคุณไปยังรหัสพื้นเมืองเช่นรับ exe บวกที่กำลังมีExcelsiorJET ฉันพบว่าใช้งานได้ดีและเป็นทางเลือกแทนการรวม JRE


ราคาแพงจริงๆ แต่
Mordechai


6

ฉันจะบอกว่า launch4j เป็นเครื่องมือที่ดีที่สุดสำหรับการแปลงซอร์สโค้ดจาวา (.java) ไปเป็นไฟล์. exe คุณสามารถรวม jre กับมันเพื่อการจำหน่ายและ exe ก็ยังสามารถเป็นไอคอนได้ แม้ว่าขนาดของแอปพลิเคชันจะเพิ่มขึ้น แต่ก็ทำให้แน่ใจว่าแอปพลิเคชันจะทำงานได้อย่างสมบูรณ์แม้ว่าผู้ใช้จะไม่ได้ติดตั้ง jre นอกจากนี้ยังทำให้แน่ใจว่าคุณสามารถให้ jre เฉพาะที่จำเป็นสำหรับแอปของคุณโดยที่ผู้ใช้ไม่ต้องติดตั้งแยกต่างหาก แต่น่าเสียดายที่จาวาสูญเสียความสำคัญของมัน การสนับสนุนหลายแพลตฟอร์มมันถูกละเว้นโดยสิ้นเชิงและรองรับแอพขั้นสุดท้ายสำหรับ windows เท่านั้น แต่นั่นไม่ใช่เรื่องใหญ่หากคุณจัดเลี้ยงเฉพาะผู้ใช้ windows


5

คุณสามารถใช้บ้า การทำงานล่าสุดนี้เป็นตัวเปิดใช้แอปพลิเคชันหรือตัวเรียกใช้งานบริการ (มีให้ตั้งแต่ 4.x)


4

อีกวิธีหนึ่งคุณสามารถใช้ตัวแปล java-to-c (เช่นJCGO ) และรวบรวมไฟล์ C ที่สร้างขึ้นเป็นไฟล์ไบนารี่พื้นเมือง (.exe) สำหรับแพลตฟอร์มเป้าหมาย


2
ฉันประหลาดใจมากกับประสิทธิภาพของวิธีนี้ ฉันต้องเห็นมันให้เชื่อ (คิดว่ารหัส Java ส่วนใหญ่คือ API ที่เรียกไปยัง JRE และทั้งหมดนั้นไม่ได้อยู่บน C ไม่ต้องคำนึงถึงความแตกต่างในการใช้ภาษา)
Camilo Martin

3

ฉันสามารถได้รับการอภัยจากการแปลงโปรแกรมจาวาเป็นแอปพลิเคชัน. exe และฉันมีเหตุผลของฉัน Major หนึ่งที่โปรแกรม Java สามารถคอมไพล์ไฟล์ jar จาก IDE จำนวนมาก เมื่อโปรแกรมอยู่ในรูปแบบ. jar สามารถทำงานได้ในหลายแพลตฟอร์มซึ่งต่างจาก. exe ซึ่งจะทำงานในสภาพแวดล้อมที่ จำกัด เท่านั้น ฉันมีความคิดที่ว่าโปรแกรม Java ไม่สามารถแปลงเป็น exe ได้เว้นแต่จะมีความจำเป็นมาก หนึ่งสามารถเขียนไฟล์. bat ที่รันโปรแกรม Java ขณะที่เป็นไฟล์ jar

ถ้าจำเป็นจริงๆที่ต้องแปลงเป็น exe ตัวแปลง Jar2Exe จะทำอย่างเงียบ ๆ และยังสามารถแนบไลบรารี่ที่คอมไพล์ร่วมกับแอพพลิเคชั่นหลักได้


สิ่งนี้คือพลังของจาวาคือการพกพา แต่ผู้คนจำนวนมากแค่ต้องการ exe windows พื้นฐาน โดยส่วนตัวแล้วฉันชอบแนวคิดของจาวา ... แต่ต้องการเผยแพร่บางสิ่งที่ผู้ใช้ของฉันสามารถทำงานได้โดยไม่ต้องดาวน์โหลด JRE
Balmipour

2

คุณสามารถแปลงขวดเพื่อ exe ใช้jar2exe อย่างไรก็ตามคุณจำเป็นต้องซื้อซอฟต์แวร์ หากคุณจำเป็นต้องมีซอฟต์แวร์โอเพ่นซอร์สที่ผมจะแนะนำJSmooth

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.