วันศุกร์, ตุลาคม 30, 2558

แก้ไข JRebel error JavaLaunchHelper

ลง OS X ใหม่ ทำให้ต้องติดตั้ง JDK ใหม่ด้วย ถ้าไป download จาก Oracle OTN website ตัวล่าสุดของ JDK 7 ที่เปิดให้โหลดคือ 7u79 เมื่อติดตั้งเรียบร้อย เอามารัน tomcat ที่ config jRebel เอาไว้ จะเจอ error ลักษณะนี้ใน console


objc[7324]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/bin/java and /Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/libinstrument.dylib. One of the two will be used. Which one is undefined.


ใน forum ของ zeroturnaround (ทีมพัฒนา JRebel) บอกเอาไว้ว่ามันเป็น bug ของ Java เอง มีการเปิด issue เอาไว้แล้วด้วย ทางแก้เท่าที่ค้นคว้าดู ตอนนี้มีทางเดียวคือกลับไปใช้ version 7u25 ดาวโหลดได้จาก OTN website ตามลิ้งข้างต้นอีกเช่นเคย

เมื่อติดตั้งด้วย .dmg ก็จะไม่มีปัญหาอะไร แต่จะเรียกใช้มันยังไงล่ะ ไอ้เจ้า version เก่า ถ้าไปเปิด post เก่า "เปลี่ยน JDK version ง่าย ด้วยคำสั่งเดียว" จะรู้ว่าเราใช้คำสั่ง $/usr/libexec/java_home ได้

แต่ทีนี้ผมลง 7u79 ไป แล้วลง 7u25 เพิ่มเข้าไปอีก เวลาสั่ง $/usr/libexec/java_home -v 1.7 มันจะได้ version ที่สูงกว่าเสมอ ลองอ่าน help ของ command line อันนี้ดูถึงรู้ว่า เราสามารถระบุได้ละเอียดกว่าแค่ 1.7 เช่นอยากได้ JDK 7u25 แทนที่จะใส่ option -v 1.7 ให้ใส่ -v 1.7.0_25 เลย

ทีนี้ script ในการรัน tomcat+JRebel ก็สามารถใช้ JDK 7u25 ได้แล้ว หน้าตาจะเป็นแบบนี้

export JAVA_HOME=$(/usr/libexec/java_home -v 1.7.0_25)
...
export CATALINA_HOME=/Volumes/MacintoshHD2/Users/HDD/apps/apache-tomcat-6.0.41
...
$CATALINA_HOME/bin/startup.sh

ไม่มีความคิดเห็น :