Cara yang disarankan untuk memaksa MobileFirst-CLI menggunakan Java 6?

Saya menggunakan OS X dan telah menggunakan Java 1.8 dari Oracle. Untuk menginstal mfp Saya memang harus menginstal Java 6 lama dari Apple, tetapi tampaknya perintah mfp tertentu, setidaknya mfp build, gagal kecuali saya mengubah variabel lingkungan JAVA_HOME untuk menunjuk ke instalasi Java 6.

Inilah output yang saya lihat:

$ 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.
$

Apa cara terbaik bagi saya untuk mengganti JAVA_HOME dengan mfp? Haruskah saya mengedit /Applications/IBM/MobileFirst-CLI/mfp?

(Untuk diketahui, kesalahan "kelas javac1.8 tidak ditemukan" adalah masalah umum dengan Ant ‹ 1.9, yang saya asumsikan dibundel dengan MobileFirst-CLI karena saya memiliki Ant 1.9.4 di sistem saya dengan instalasi Java 1.8.)


person N2O    schedule 09.06.2015    source sumber
comment
meretas instalasi MFP untuk memaksanya menggunakan Java 6 ... di /Applications/IBM/MobileFirst-CLI/mobilefirst-cli/bin/mobilefirst-cli.js, tepat di atas (tepat setelah #!/usr/bin/env node: process.env['JAVA_HOME'] = '/Library/Java/Home';   -  person N2O    schedule 09.06.2015


Jawaban (2)


Pendekatan terbaik di sini adalah dengan memiliki skrip pembungkus sederhana seperti yang disebutkan sebelumnya. Ini membuat Anda aman dari pembaruan. Juga, pastikan untuk menghapus pengaturan PATH di "/etc/profile". Ini cukup sederhana...

Di pesta:

#!/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 $@

Di simpul...

#!/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' } );

Semoga ini membantu.

person Karl Bishop    schedule 09.06.2015

Worklight/MFP hingga versi 7.0 saat ini tidak mendukung Java 8. Java 6 atau 7 harus digunakan.
Oleh karena itu, cara yang disarankan adalah menghapus instalasi Java 8 dan menginstal Java 6 atau 7.

Jika Anda ingin 'memaksa' MFP menggunakan versi Java yang berbeda, atur versi Java tersebut dalam variabel JAVA_HOME Anda.

Saya sudah mengaturnya di ~/.bash_profile seperti ini:

#### ORACLE JAVA
#export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home"
person Idan Adar    schedule 09.06.2015
comment
Hal-hal lain memerlukan Java 8 ... menghapus instalannya bukanlah solusi. Bagaimana cara terbaik membuat MFP menggunakan Java 6? ... Yang diperlukan hanyalah pengaturan JAVA_HOME ... Saya kira saya hanya akan membuat skrip pembungkus untuk mfp - person N2O; 09.06.2015
comment
Saya rasa tidak mungkin menyetel versi Java tertentu untuk aplikasi tertentu dan versi Java lain untuk aplikasi lainnya. Setidaknya dari Googling. - person Idan Adar; 09.06.2015
comment
Jika Anda menemukan cara - kirimkan jawaban. - person Idan Adar; 09.06.2015
comment
solusinya adalah dengan mengganti JAVA_HOME sebelum menjalankan perintah ... Saya telah melakukannya dengan meretas mobilefirst-cli.js dan mengatur process.env['JAVA_HOME'] ke jalur ke Java 6 (lihat komentar saya pada pertanyaan) ... Saya sangat berharap mungkin ada yang direkomendasikan solusi karena ini harus dilakukan ulang pada peningkatan - person N2O; 09.06.2015