2016-02-18 25 views
6

Tôi đang cố gắng khởi chạy Ứng dụng RCP Eclipse bằng Shell Script trên OS X bằng cách sử dụng plugin Eclipse Indigo với Java 1.6. Các phiên bản của hệ điều hành là 10.11.3 Kịch bản là như sau:Không thể khởi chạy Ứng dụng RCP Eclipse trên 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" 

Tôi nhận được lỗi sau:

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

gì có thể là lý do?

+0

Nó đưa ra cùng một lỗi và bằng cách nào đó sử dụng hệ thống vm ngay cả khi tôi cập nhật tệp plist hoặc ini. Ứng dụng cần sử dụng jre cụ thể –

+0

Cố gắng giải nén tệp của bạn bằng một công cụ khác và kiểm tra đường dẫn, thư mục + tên tệp .... Nguồn: https://www.eclipse.org/forums/index.php/t/ 24093/ – Joda

+0

Không có mã zip. Tôi đang cố gắng tạo trình cài đặt –

Trả lời

2

Có vẻ như vấn đề là với lệnh Java được chạy thay vì bằng mã Bash chạy nó, nhưng mã Bash có vấn đề khiến cho việc gỡ lỗi trở nên khó khăn. Một vấn đề là một chuỗi được sử dụng để lưu trữ một lệnh, các tùy chọn và các đối số. Đây thường là một ý tưởng tồi vì nó làm cho nó khó khăn để tránh các vấn đề với việc mở rộng tên đường dẫn (globbing) và tách từ. Một vấn đề khác là sử dụng eval, cách tốt nhất là tránh và hiếm khi cần thiết. Đây là phiên bản được sửa đổi đôi chút của mã sử dụng mảng để lưu trữ lệnh và không sử dụng '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[@]}" 

Việc gỡ lỗi này sẽ dễ dàng hơn. Chạy nó với bash -x để xem chính xác nó đang làm gì. Sao chép và dán văn bản giữa các dấu ngoặc trong đầu ra cmd_parts=(...) để chạy lại lệnh Java mà chương trình đã chạy. Hy vọng rằng sẽ cho phép bạn xác định những gì là sai với lệnh, và làm thế nào để sửa chữa nó.

+0

Vâng * ai đó * đọc Câu hỏi thường gặp 50! – miken32

Các vấn đề liên quan