Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

"Workspace is closed" exception when trying to get the workspace through ResourcesPlugin

I get this error when trying to get the workspace through ResourcesPlugin:

java.lang.IllegalStateException: Workspace is closed.
at org.eclipse.core.resources.ResourcesPlugin.getWorkspace(ResourcesPlugin.java:339)

The code generating this is:

IWorkspace ws = ResourcesPlugin.getWorkspace();

Can you please help with this problem?

like image 238
Jenny Smith Avatar asked Jun 07 '09 17:06

Jenny Smith


1 Answers

Does your Manifest.MF contain the org.eclipse.core.resources in the Require-bundle section ?

And do you launch your test as a plugin ? (not as a 'Java Application')

See also this thread.

As mentioned in the "Resources and the file system" help page,

You can access the workspace from the resources plug-in class (defined in org.eclipse.core.resources).

When the resources plug-in is not running, the workspace exists solely in the file system and is viewed or manipulated by the user via standard file-based tools. Let's look at what a workspace looks like on disk as we explain the resources plug-in API.


From this book:

The workspace directory, regardless of the name defined with the -data invocation option, has two roles:

  • it acts as the parent for the .metadata directory
  • and as the default location for projects

the workspace can contains projects only when:

  • the org.eclipse.core.resources plugin is included in the configuration and
  • and appropriately started from the workbench

this is automatic from an IDE configuration based on the org.eclipse.ui.ide.workbench application.

See also this thread and remember that:

the workspace is a different workspace from the runtime-workspace that's used for testing plugins. When you do Run on an Eclipse PDE environment, it creates a new workspace which is completely empty.

The testing workspace root can be specified through the "-data" launching option.

If you want to access a file, your best bet is to include it in the plugin itself, and then use getClass().getResourceAsStream("/myfile.txt") to get an InputStream that you can read the contents for.

like image 134
VonC Avatar answered Oct 21 '22 21:10

VonC