DataKeys class not found in PhpStorm

I want to make simple plugin to have in files popup menu option "Upload to all servers in Deployment section".
First question: is this possible at all? (get from plugin servers list in phpstorm and push for each upload action in loop). And if possible - how to get this deployements servers, cause seems its something special thing for phpstrom\webstorm and idea dont know about them.

Second question:
I started from webinar tutorial, made simple plugin that has action in projects right click popup, found code to get selected files here.
This was working, than i found this link, it says "... in the second case you need to specify current installation of PhpStorm. This step is described in the Getting Started with Plugin Development...", so i changed in projects settings SDK to phpstrom folder, instead of idea. And add idea sources. After this run button start running phpstrom, plugin inside, but it say:

java.lang.ClassNotFoundException: com.intellij.openapi.actionSystem.DataKeys


when code try to

VirtualFile[] selectedFiles = DataKeys.VIRTUAL_FILE_ARRAY.getData(dataContext);

At same time when i switching SDK back to idea folder, and export plugin as jar, import in phpstrom - this code works.

Comment actions Permalink

I second this, a user of the MKS plugin(which I maintain) reported the plugin was failing in PyCharm 3.1.1 due to the same cause. See

Caused by: java.lang.ClassNotFoundException: com.intellij.openapi.actionSystem.DataKeys PluginClassLoader[MKS, 0.10.2]
     at java.lang.ClassLoader.loadClass(
     ... 56 more

I know this DataKeys class has been deprecated but according to github's community source it still exists.

what's the IDEA version for that PyCharm version ?
Is this an oversight when building it ? or do we have to patch all plugins using that depreacted class to use the new way ?


    private VirtualFile[] getVirtualFiles(AnActionEvent event) {
        return PlatformDataKeys.VIRTUAL_FILE_ARRAY.getData(event.getDataContext());

    private Project getProject(AnActionEvent event) {
        return PlatformDataKeys.PROJECT.getData(event.getDataContext());

Comment actions Permalink

DataKeys class is IntelliJ IDEA-specific, you should be able to use LangDataKeys or PlatformDataKeys instead.


Please sign in to leave a comment.