Рекомендуемый способ заставить 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
взлом установки МФУ, чтобы заставить его использовать 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.

Если вы хотите «заставить» МФУ использовать другую версию 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 ... удаление - это не решение. Как лучше заставить МФУ использовать 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