Failed to start Eclipse RCP application on OS X

I am trying to run an RCP Eclipse application using the Script shell on OS X using the Eclipse Indigo plugin with Java 1.6. OS version - 10.11.3 Script is as follows:

#!/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" 

I get the following error:

 !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) 

What could be the reason?

+6
source share
1 answer

It seems that the problem is that the Java command is being executed, and not with the Bash code that runs it, but the Bash code has problems that make debugging difficult. One problem is that the string is used to store the command, parameters, and arguments. This is usually a bad idea because it makes it difficult to troubleshoot problems with globbing and word splitting. Another problem is using eval , which is best avoided and rarely needed. This is a slightly modified version of the code that uses arrays to store the command and does not use "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=( " $@ " ) 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[@]}" 

It should be easier to debug. Run it with bash -x to see what exactly it does. Copy and paste the text between the brackets in the output of cmd_parts=( ... ) to re-run the Java command launched by the program. I hope this allows you to determine what is wrong with the team and how to fix it.

+2
source

All Articles