คำแนะนำที่สั้นที่สุด เรากำลังเขียนแอปพลิเคชันทดสอบง่ายๆ พูดว่า "สวัสดี Amigo!" ไปยังไฟล์ HiAmigo.txt 100 ครั้ง
public class Main {
public static void main(String[] args) throws IOException {
File file = new File("C:\\temp\\HiAmigo.txt");
FileWriter fileWriter = new FileWriter(file);
for (int i = 0; i < 100 ; i++) {
fileWriter.write("Hi Amigo! \n");
}
fileWriter.close();
}
}
เราตรวจสอบว่าทุกอย่างทำงานได้ในขั้นตอนนี้ (นี่เป็นสิ่งสำคัญ!) ไปที่ File -> Project Structure -> Artifacts -> + JAR -> From Modules with dependencies.. ระบุพาธไปยัง Main.class ของเรา: คลิก OK คลิก Build Artifacts -> การดำเนินการ -> สร้าง สิ่งประดิษฐ์ของเราปรากฏขึ้น: เราลบไฟล์ทดสอบ “C:\\temp\\HiAmigo.txt” และรัน JAR ไฟล์ควรปรากฏขึ้นอีกครั้ง หากปรากฏขึ้นทุกอย่างก็โอเค เดินหน้าต่อไป ดาวน์โหลดเครื่องมือจากเว็บไซต์ https://launch4j.sourceforge.net/ (ฉันแนะนำเวอร์ชัน 3.14 ฉันจะอธิบายเหตุผลในภายหลัง) ติดตั้งและเปิดใช้งาน เราต้องการสองฟิลด์ เราระบุ JAR ของเราและตำแหน่งที่จะใส่ .exe ที่เสร็จ แล้ว ตอนนี้เป็นส่วนที่น่าสนใจที่สุดแล้ว ลองนึกภาพสถานการณ์ที่เครื่องที่เราวางแผนจะใช้แอปพลิเคชันของเราไม่ได้ติดตั้ง JRE และไม่มีวิธีติดตั้ง สิ่งนี้มักเกิดขึ้นด้วยเหตุผลด้านความปลอดภัย นอกจากนี้ เป็นการดีที่จะมอบความเป็นอิสระในระดับที่สูงขึ้นให้กับแอปพลิเคชันของเรา เรามาทำสิ่งต่อไปนี้กัน มาสร้างไดเร็กทอรีแยกต่างหากสำหรับแอปพลิเคชันของเรา สมมติว่า OurApp ข้างในเราสร้างโฟลเดอร์ JRE ดาวน์โหลด JRE (ในตัวอย่างของฉัน ให้เป็น jre-8u361-windows-i586) ติดตั้งที่ไหนสักแห่ง (หากเป็นไฟล์เก็บถาวรสำเร็จรูป ให้แตกไฟล์) และแตกไฟล์ทั้งหมดจากนั้น เราคัดลอกทุกอย่างลงใน \แอปของเรา\JRE\ ซึ่งควรมีลักษณะดังนี้: ใน Launch4j ไปที่แท็บ JRE และในฟิลด์ Bundled JRE paths: ระบุชื่อของไดเร็กทอรี JRE คลิกที่เฟืองและเลือกไฟล์ใดก็ได้ที่จะบันทึก การกำหนดค่าเช่น file.xml หลังจากคลิกที่บันทึกของเราจะปรากฏ exe คัดลอก exe และวางไว้ถัดจากโฟลเดอร์ JRE ลบการทดสอบ C:\temp\HiAmigo.txt เราเปิดตัว exe และดูว่ามีการสร้างอันใหม่อย่างไร นั่นคือทั้งหมดที่ ขณะนี้ไดเร็กทอรี OurApp สามารถเก็บถาวรและถ่ายโอนได้ทุกที่ exe จะทำงาน สำคัญ: เวอร์ชัน JRE ในโฟลเดอร์ต้องไม่ต่ำกว่าเวอร์ชันที่สร้างขึ้น ตรวจสอบช่องนี้: ในกรณีของฉัน มีปัญหาความเข้ากันได้กับแพลตฟอร์ม x86 และฉันใช้ wrapper เวอร์ชัน 3.14 เนื่องจากช่วยให้คุณสามารถระบุประเภทของสถาปัตยกรรมเป้าหมายได้อย่างชัดเจน โดยทั่วไปขอขอบคุณทุกท่านที่ให้ความสนใจ นี่เป็นบทความการสอนเรื่องแรกของฉัน โปรดอย่าตัดสินอย่างเคร่งครัด สันติภาพสำหรับทุกคน!
GO TO FULL VERSION