2011-08-01 7 views
0

私はそのプログラムコードで設定ページ作られている - この設定ページで環境設定ページからパスを取得し、ボタンで開始されたプロセスでパスを使用するにはどうすればよいですか?

public class SAML 
    extends FieldEditorPreferencePage 
    implements IWorkbenchPreferencePage { 

    public SAML() { 
     super(GRID); 
     setPreferenceStore(RmpPlugin.getDefault().getPreferenceStore()); 
     setDescription("Browse Appropriate files"); 
    } 

    public FileFieldEditor f; 
    public FileFieldEditor f1; 
    public void createFieldEditors() { 
     f = new FileFieldEditor(PreferenceConstants.P_PATH, 
       "&Prism.bat File:", getFieldEditorParent()); 
     addField(f); 

     f1 = new FileFieldEditor(PreferenceConstants.P_PATH1, 
       "&NuSMV Application File:", getFieldEditorParent()); 
     addField(f1); 
    } 
    public void init(IWorkbench workbench) { 
    } 
} 

を、「prism.bat」と「NuSMV.exe」ファイルを選択するために使用される2 FileFieldEditorがあります。私は、そのコードは私の別のボタンのプログラミングでパスにアクセスした

は---

try {   
    IPreferenceStore store = plugin.getPreferenceStore(); 

    ProcessBuilder pb=new ProcessBuilder(store.getString(PreferenceConstants.P_PATH)); 
    pb.directory(new File(store.getString(PreferenceConstants.P_PATH))); 
    Process p=pb.start(); 

    BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream())); 

    String in; 
    while((in = input.readLine()) != null) { 
     out.println(in); 
    } 

    int exitVal=p.waitFor();    

    if(exitVal==0) 
    { 
     out.println("Printing on console"); 
    } 
    else 
     out.println("Process failed"); 
} 
catch (Exception e) 
{ 
    out.println(e.toString()); 
    e.printStackTrace(); 
} 

私は設定ページからPrism.batファイルを選択した後、ボタンをクリックしていますたびに、ファイルが見つからないと言っています。

私には何が欠けていますか?

答えて

0

コードをデバッグし、これが何を計算するかを確認してください。 store.getString(PreferenceConstants.P_PATH)); pb.directory(新しいファイル(store.getString(PreferenceConstants.P_PATH))

コマンドラインからexcuteして、何が欠落しているかを見てください。私の推測では、パスに空白文字があります。

+0

-thanks for response.Errorは - ** java.io.IOException: ""(ディレクトリ ""内)を実行できません:CreateProcessエラー= 2、指定されたファイルが見つかりません** 私はEclipseには初めてです。 Prism.bat "**および** NuSMV.exe" ** file fi次回FileFieldEditorから選択したファイルの状態を保存する必要があります。現在、FileFieldEditorから別のファイルを選択した場合でも、** PRISM.BAT **または** NuSMV.exe **のパスのみを保存しています。 –

+0

私はこのようなことをします。 String command = store.getString(PreferenceConstants.P_PATH)); pb.directory(new File(store.getString(PreferenceConstants.P_PATH)); System.out.println(コマンド); //この出力を参照してコマンドプロンプトで実行します。 pub = new ProcessBuilder(command); – Ankur

+0

このメソッドを試しましたが、出力は何もありません。単に空白になります.... つまり、 ** String command = store.getString(PreferenceConstants.P_PATH); ** 環境設定ページからパスを取得していません! 次に確認するもの –

関連する問題