Как я могу получить путь со страницы настроек и использовать его в процессе, запускаемом кнопкой? - PullRequest
0 голосов
/ 01 августа 2011

Я создал страницу настроек, код программы которой -

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) {
    }
}

На этой странице настроек есть два FileFieldEditor , которые используются для выбора файлов "prism.bat" и "NuSMV.exe".

Я получил доступ к пути в моей другой кнопочной программе, код которой ---

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 на странице настроек, он говорит, что файл не найден.

Чего мне не хватает?

1 Ответ

0 голосов
/ 02 августа 2011

Отладьте ваш код и посмотрите, к чему это приведет store.getString (PreferenceConstants.P_PATH)); pb.directory (новый файл (store.getString (PreferenceConstants.P_PATH))

извини его из командной строки и посмотри, чего не хватает. Я предполагаю, что на вашем пути есть космический персонаж, который нарушает его. Цитировать путь может исправить это. Но посмотрите на строку и решите соответственно.

...