วิธีที่แนะนำในการบังคับให้ MobileFirst-CLI ใช้ Java 6?

ฉันใช้ OS X และใช้ Java 1.8 จาก Oracle ในการติดตั้ง mfp ฉันต้องติดตั้ง Java 6 เก่าจาก Apple แต่ดูเหมือนว่าคำสั่ง mfp บางคำสั่ง อย่างน้อย mfp build จะล้มเหลวเว้นแต่ฉันจะเปลี่ยนตัวแปรสภาพแวดล้อม JAVA_HOME ให้ชี้ไปที่การติดตั้ง Java 6

นี่คือผลลัพธ์ที่ฉันเห็น:

$ mfp build
[Error: 
BUILD FAILED
/Applications/IBM/MobileFirst-CLI/mobilefirst-cli/node_modules/generator-worklight-server/lib/build.xml:133: The following error occurred while executing this line:
/Applications/IBM/MobileFirst-CLI/mobilefirst-cli/node_modules/generator-worklight-server/lib/build.xml:155: Class not found: javac1.8

Total time: 1 second]
Error: Sorry an error has occurred. Please check the stack above for details.
$ JAVA_HOME=/Library/Java/Home mfp build
All apps and adapters were successfully built.
$

วิธีใดคือวิธีที่ดีที่สุดสำหรับฉันที่จะแทนที่ JAVA_HOME ด้วย mfp ฉันควรแก้ไข /Applications/IBM/MobileFirst-CLI/mfp หรือไม่

(เพื่อแจ้งให้ทราบ ข้อผิดพลาด "ไม่พบคลาส javac1.8" เป็นปัญหาที่ทราบเกี่ยวกับ Ant ‹ 1.9 ซึ่งฉันถือว่ามาพร้อมกับ MobileFirst-CLI เนื่องจากฉันมี Ant 1.9.4 บนระบบของฉันพร้อมกับการติดตั้ง Java 1.8)


person N2O    schedule 09.06.2015    source แหล่งที่มา
comment
แฮ็กการติดตั้ง MFP เพื่อบังคับให้ใช้ Java 6 ... ใน /Applications/IBM/MobileFirst-CLI/mobilefirst-cli/bin/mobilefirst-cli.js ที่ด้านบนสุด (ทันทีหลังจาก #!/usr/bin/env node: process.env['JAVA_HOME'] = '/Library/Java/Home';   -  person N2O    schedule 09.06.2015


คำตอบ (2)


วิธีที่ดีที่สุดคือการมีสคริปต์ตัวตัดคำแบบง่ายตามที่กล่าวไว้ก่อนหน้านี้ สิ่งนี้ช่วยให้คุณปลอดภัยจากการอัปเดต นอกจากนี้ อย่าลืมลบการตั้งค่า PATH ใน "/etc/profile" ออกด้วย มันค่อนข้างง่าย...

ในทุบตี:

#!/bin/bash
#--------------------------------------------------------------------
# Simple multi-MFP launcher script
# Karl Bishop <[email protected]>
#--------------------------------------------------------------------

#-- Set specific Java Runtime?
#export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_55.jdk/Contents/Home

#-- MFP Home directory for custom runtimes
MFP_HOME="${HOME}/dev/mobilefirst"

#-- Set specific Java Runtime
export PATH=$JAVA_HOME/bin:$PATH
echo "Using Java: ${JAVA_HOME}"

#-- Launch custom MFP
${MFP_HOME}/mobilefirst-cli/bin/mobilefirst-cli.js $@

ในโหนด...

#!/usr/bin/env node
//--------------------------------------------------------------------
// Simple multi-MFP launcher script
// Karl Bishop <[email protected]>
//--------------------------------------------------------------------
var spawn  = require('child_process').spawn;
var MFP_HOME = process.env.HOME + "/dev/mobilefirst",
    MFP_CMD = MFP_HOME+"/mobilefirst-cli/bin/mobilefirst-cli.js",
    JAVA_HOME = "/Library/Java/JavaVirtualMachines/jdk1.7.0_55.jdk/Contents/Home";

process.env['JAVA_HOME'] = JAVA_HOME;
process.env['PATH']      = JAVA_HOME+"/bin:" + process.env['PATH'];
console.log("Using Java:", CFG.JAVA_HOME);        //-- Launch custom MFP
spawn( MFP_CMD, args, { stdio:'inherit' } );

หวังว่านี่จะช่วยได้

person Karl Bishop    schedule 09.06.2015

Worklight/MFP จนถึงเวอร์ชัน 7.0 ไม่รองรับ Java 8 ในขณะนี้ ต้องใช้ Java 6 หรือ 7 อย่างใดอย่างหนึ่ง
ดังนั้นวิธีที่แนะนำคือการถอนการติดตั้ง Java 8 และติดตั้ง Java 6 หรือ 7

หากคุณต้องการ 'บังคับ' MFP ใช้ Java เวอร์ชันอื่น ให้ตั้งค่าเวอร์ชัน Java นั้นในตัวแปร JAVA_HOME ของคุณ

ฉันได้ตั้งค่าไว้ใน ~/.bash_profile ดังนี้:

#### ORACLE JAVA
#export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home"
person Idan Adar    schedule 09.06.2015
comment
สิ่งอื่นต้องใช้ Java 8 ... การถอนการติดตั้งไม่ใช่วิธีแก้ปัญหา วิธีที่ดีที่สุดที่จะทำให้ MFP ใช้ Java 6 แทนได้อย่างไร ... เพียงแค่ตั้งค่า JAVA_HOME ... ฉันเดาว่าฉันจะทำสคริปต์ตัวตัดคำสำหรับ mfp - person N2O; 09.06.2015
comment
ฉันไม่คิดว่าเป็นไปได้ที่จะตั้งค่า Java เวอร์ชันเฉพาะสำหรับแอปเฉพาะและ Java เวอร์ชันอื่นสำหรับสิ่งอื่นใด อย่างน้อยก็จากกูเกิล - person Idan Adar; 09.06.2015
comment
หากคุณพบวิธี - โพสต์คำตอบ - person Idan Adar; 09.06.2015
comment
วิธีแก้ไขคือการแทนที่ JAVA_HOME ก่อนที่จะรันคำสั่ง ... ฉันได้ทำเช่นนั้นโดยการแฮ็ก mobilefirst-cli.js และตั้งค่า process.env['JAVA_HOME'] เป็นเส้นทางไปยัง Java 6 (ดูความคิดเห็นของฉันเกี่ยวกับคำถาม) ... ฉันหวังเป็นอย่างยิ่งว่าอาจมีคำแนะนำที่แนะนำ วิธีแก้ปัญหาเนื่องจากจะต้องทำใหม่ในการอัปเกรด - person N2O; 09.06.2015