ตกลงนี่เป็นวิธีแก้ปัญหาที่ฉันอยากจะหาแทนที่จะเขียนที่นี่:
ขั้นแรกให้สร้างโครงสร้างไดเร็กทอรีที่สอดคล้องกับแพ็กเกจที่กำหนดไว้สำหรับไฟล์. java หากเป็น my.super.application ให้สร้างไดเร็กทอรี "my" และภายใน "super" และภายในไฟล์. java "App.java"
จากบรรทัดคำสั่ง:
javac -cp /path/to/lib1.jar:/path/to/lib2.jar path/to/my/super/App.java
โปรดสังเกตว่าข้างต้นจะรวมไลบรารีหลาย ๆ ไลบรารีหากภายใต้ windows ใช้ "," เพื่อแยกไฟล์หลายไฟล์มิฉะนั้นภายใต้ GNU / Linux ให้ใช้ ":" ในการสร้างไฟล์ jar
jar -cvfe App.jar App my/app/
ข้างต้นจะสร้างแอปพลิเคชันโดยมี Manifest ที่สอดคล้องกันซึ่งระบุว่าแอปเป็นคลาสหลัก
การรวมไลบรารีที่จำเป็นภายในไฟล์ jar นั้นไม่สามารถทำได้โดยใช้พารามิเตอร์บรรทัดคำสั่ง java หรือ jar
คุณสามารถทำสิ่งต่อไปนี้แทนได้
- แยกไลบรารีไปยังโฟลเดอร์รูทของไฟล์ jar ด้วยตนเอง
- ใช้ IDE เช่น Netbeans และแทรกกฎภายในส่วน post-jar ของ nbproject / build-im.xml เพื่อแยกไลบรารีภายใน jar ดูด้านล่าง
<target name="-post-jar">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
<jar jarfile="${dist.jar}" update="true">
<zipfileset src="${dist.jar}" includes="**/*.class" />
<zipfileset src="${file.reference.iText-1.0.8.jar}" includes="**/*"/>
<zipfileset src="${file.reference.itextpdf-3.2.1.jar}" includes="**/*"/>
</jar>
</target>
พบชื่อ file.reference ภายในไฟล์ project.properties หลังจากที่คุณเพิ่มไลบรารีเข้ากับ Netbeans IDE