Я пытаюсь открыть файл в редакторе Eclipse из моей программы python.Открытие редактора Eclipse из python с Py4J
Вот пример того, как сделать это с помощью Java:
import java.io.File;
import org.eclipse.core.filesystem.EFS;
import org.eclipse.core.filesystem.IFileStore;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.ide.IDE;
File fileToOpen = new File("externalfile.xml");
if (fileToOpen.exists() && fileToOpen.isFile()) {
IFileStore fileStore = EFS.getLocalFileSystem().getStore(fileToOpen.toURI());
IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
try {
IDE.openEditorOnFileStore(page, fileStore);
} catch (PartInitException e) {
//Put your exception handler here if you wish to
}
} else {
//Do something if the file does not exist
}
Я пытаюсь использовать этот API из питона с использованием Py4j.
from py4j.java_gateway import JavaGateway, java_import
gateway = JavaGateway()
jvm = gateway.jvm
java_import(jvm, 'org.eclipse.core.filesystem.EFS')
java_import(jvm, 'org.eclipse.ui.PlatformUI')
fileToOpen = jvm.java.io.File('c:/test.txt')
fileStore = jvm.org.eclipse.core.filesystem.EFS.getLocalFileSystem().getStore(fileToOpen.toURI());
Это прекрасно работает. Но я уложился с получением page
.
page = jvm.org.eclipse.ui.PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
Я получаю Нет здесь. Похоже, Рудольф Видман написал ответ на этот вопрос here. Таким образом, решение java будет:
Display.getDefault().asyncExec(new Runnable() {
@Override
public void run() {
IWorkbenchWindow iw = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
}
});
Но как я могу это сделать из python? Как реализовать его с Py4j?
Это Java-код будет работать только в плагин Eclipse, он не будет работать в «нормальной» программы Java. –
Py4j имеет плагин eclipse, который позволяет программисту взаимодействовать с API-интерфейсом eclipse. Просто взгляните: http://py4j.wordpress.com/2010/02/18/eclipse-py4j/ – Adam