2016-02-18 83 views
6

Sto tentando di avviare un'applicazione Eclipse RCP utilizzando Shell Script su OS X utilizzando il plug-in Eclipse Indigo con Java 1.6. La versione del sistema operativo è 10.11.3 Lo script è il seguente:Impossibile avviare Eclipse RCP Application su OS X

#!/bin/bash 
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" 
app_cmd="\"$DIR/../Resources/jre/Contents/Home/bin/java\" 
-XstartOnFirstThread 
-Xdock:name=GS\ Risk 
-Xdock:icon=\"$DIR/../Resources/AppIcon.ico\" 
-Dorg.eclipse.swt.internal.carbon.smallFonts 
-Dosgi.console.enable.builtin=true 
-jar \"$DIR/../Resources/plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar\" 
-data @noDefault 
-Dfile.encoding=UTF-8 
-os macosx 
-ws cocoa 
-arch x86_64 
-nl en_US 
-consoleLog 
-console 
-showsplash 
AppName" 

runCommand() { 
    typeset cmnd="$*" 
    typeset ret_code 
    echo cmnd=$cmnd 
    eval $cmnd 
    ret_code=$? 
    case $ret_code in 
    0) 
     printf "[%s] exit OK." "$NAME" 
     ;; 
    23) 
     printf "[%s] requested a restart. Restarting..." "$NAME" r 
     unCommand "$cmnd" 
     ;; 
    *) 
     printf "Error : [%d] when executing command: '$cmnd'" $ret_code 
     ;; 
    esac 
    printf "\n" 
    exit $ret_code 
} 

runCommand "$app_cmd" 

Sto ottenendo il seguente errore:

!SESSION Thu Feb 18 21:50:11 GMT+05:30 2016 ------------------------------------ 
!ENTRY org.eclipse.equinox.launcher 4 0 2016-02-18 21:50:11.660 
!MESSAGE Exception launching the Eclipse Platform: 
!STACK 
java.lang.RuntimeException: Could not find framework 
    at org.eclipse.equinox.launcher.Main.getBootPath(Main.java:978) 
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:557) 
    at org.eclipse.equinox.launcher.Main.run(Main.java:1410) 
    at org.eclipse.equinox.launcher.Main.main(Main.java:1386) 

Quale può essere il motivo?

+0

Sta dando lo stesso errore e in qualche modo utilizzando il sistema vm anche se aggiorno il file plist o ini. L'applicazione deve utilizzare il jre specifico –

+0

Provare a decomprimere i file con un altro strumento e controllare i percorsi, la cartella + i nomi dei file .... Source: https://www.eclipse.org/forums/index.php/t/ 24093/ – Joda

+0

Non c'è zip. Sto cercando di creare un programma di installazione –

risposta

2

Sembra che il problema sia con il comando Java eseguito piuttosto che con il codice Bash che lo esegue, ma il codice Bash presenta problemi che rendono difficile il debug. Un problema è che una stringa viene utilizzata per memorizzare un comando, opzioni e argomenti. Questa è generalmente una cattiva idea perché rende difficile evitare problemi con l'espansione del percorso (globbing) e la suddivisione in parole. Un altro problema è l'uso di eval, che è meglio evitare e raramente necessario. Questa è una versione leggermente modificata del codice che utilizza gli array per memorizzare il comando e non fa uso di 'eval':

#!/bin/bash 

DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" 

app_cmd_parts=(
    "$DIR/../Resources/jre/Contents/Home/bin/java" 
    -XstartOnFirstThread 
    -Xdock:name='GS Risk' 
    -Xdock:icon="$DIR/../Resources/AppIcon.ico" 
    -Dorg.eclipse.swt.internal.carbon.smallFonts 
    -Dosgi.console.enable.builtin=true 
    -jar "$DIR/../Resources/plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar" 
    -data @noDefault 
    -Dfile.encoding=UTF-8 
    -os macosx 
    -ws cocoa 
    -arch x86_64 
    -nl en_US 
    -consoleLog 
    -console 
    -showsplash 
    AppName 
) 

runCommand() { 
    typeset cmd_parts=("[email protected]") 
    typeset ret_code 
    printf 'cmd_parts=(' 
    printf ' %q' "${cmd_parts[@]}" 
    printf ')\n' 
    "${cmd_parts[@]}" 
    ret_code=$? 
    case $ret_code in 
    0) 
     printf "[%s] exit OK." "$NAME" 
     ;; 
    23) 
     printf "[%s] requested a restart. Restarting..." "$NAME" runCommand "${cmd_parts[*]}" 
     ;; 
    *) 
     printf "Error : [%d] when executing command: '${cmd_parts[*]}'" $ret_code 
     ;; 
    esac 
    printf "\n" 
    exit $ret_code 
} 

runCommand "${app_cmd_parts[@]}" 

Questo dovrebbe essere più facile per eseguire il debug. Eseguilo con bash -x per vedere esattamente cosa sta facendo. Copia e incolla il testo tra parentesi nell'output cmd_parts=(...) per rieseguire il comando Java eseguito dal programma. Speriamo che ciò ti permetta di determinare cosa c'è di sbagliato nel comando e come risolverlo.

+0

Bene * qualcuno * leggi FAQ 50! – miken32