ใน Windows มีโปรแกรมชื่อ Altova สำหรับ Validate XML แต่โชคไม่ดีไม่มี Altova for Mac
ผมจึงใช้โปรแกรมชื่อ Validator ช่วย แต่มัน Validate ได้แค่ XML ที่ถูกกำหนด Schema ด้วย DTD เท่านั้น แต่ไม่สามารถ Validate ให้ XML ที่ถูกกำหนด Schema ด้วย XMLSchema ได้ ทำได้อย่างมากก็แค่ verify ว่า well-form หรือเปล่า
สุดท้ายผมตัดสินใจเขียนโปรแกรมสำหรับ Validate XML ด้วย XMLSchema เอง โดยก่อนเขียนผมก็ google ก่อน 1 รอบ ปรากฏว่าไปเจอที่นี่ - Validating XML with a W3C XML Schema ผมก็เลยจัดแจงใช้ Groovy เขียนแล้วใช้ NetBeans สร้าง Swing มาครอบเป็น GUI อีกชั้นนึง
หลัง จากทำเสร็จแล้วสั่งให้ NetBeans Build JAR ไฟล์ให้ แต่ไฟล์ก็ยังกระจัดกระจาย ผมจึงใช้โปรแกรมชื่อ Jar Bundler เพื่อน pack ไฟล์ต่างๆให้เป็น .app ที่ Mac คุ้นเคยดี โดยโปรแกรมนี้อยู่ที่
/Developer/Applications/Utilities/
หลังจากกำหนด Main Class ในแท็บ Build Information และ add resource ต่างๆลงไปเสร็จแล้วสั่ง Create Application ได้ทันที

แล้ว เราจะได้ .app มา 1 ไฟล์ เมื่อทดลองรันก็รันและทำงานได้เป็นปกติ แต่แล้วปัญหาก็เกิด เมื่อเราย้ายไฟล์ต่างๆที่เราโยนใส่ไปใน Additions to Classpath (ช่องด้านล่างของรูปนี้) มันถูกเราย้ายไปที่อื่น เมื่อทดลองรันโปรแกรมอีกครั้งพบว่ามันฟ้องแบบนี้ Cannot launch Java application, Uncaught exception in main method

ปัญหาก็คือมันมองไม่เห็น library ที่เราเพิ่มเข้าไปให้มันตอนแรก
วิธี แก้ก็คือ ให้ click ขวาที่ .app ที่ถูกสร้างขึ้นมาจากการสั่ง Create Application จากนั้นเลือก Show Package Contents และย้าย library ต่างๆที่เราต้องใช้ไปวางไว้ที่
myApp.app/Contents/Resources/Java/
จากนั้นเข้าไปแก้ไขไฟล์ info.plist ในส่วนของ Root/Java/ClassPath โดยกำหนด path ให้ชี้ไปที่ JAR ต่างๆใน lib ที่เราพึ่ง copy ไปวาง ในลักษณะเดียวกันกับรูปด้านล่าง

จากนั้นเราก็จะสามารถรันโปรแกรม .app ที่ได้มาได้ปกติ


สุดท้ายนี้มีข้อเตือนใจนิดนึงตรงที่ว่า "อย่าใช้ Groovy เขียน Application เล็กๆร่วมกับ Java ถ้าไม่จำเป็น" เพราะไฟล์ที่ได้จะใหญ่ เนื่องจากต้องรวม groovy-all library เข้าไปด้วย
จากรูปจะเห็นว่าโปรแกรมเล็กๆแค่นี้แต่ไฟล์ใหญ่ถึง 3.2MB เลยทีเดียว!
Related Link from Roti





0 comments:
แสดงความคิดเห็น