How do I tell visualvm where to find my source code?

java, visualvm

Solution

I took a stack dump of the VisualVM process while it was displaying that error dialog, and it seems that the problem lies in the class org.netbeans.modules.profiler.api.GoToSource, in the method `openSourceImpl`.

This method tries to load the source using any registered implementations of the `GoToSourceProvider` service provider interface, and displays the error message if none of them manage to display the source code in question.

My guess is that the current, default version of VisualVM doesn't have any `GoToSourceProviders` registered, and therefore will always fail to look-up source code.

From the package name it appears that `GoToSourceProvider` is an SPI for the profiler module, but I wasn't able to find any documentation on how to implement this SPI, and it doesn't seem to be part of the VisualVM extension points.

Problem

I'm running VisualVM to profile a simple Java application. When I double-click on a method in the profiling pane (hoping to get more details on it), then it says "No source found for class ....". I know where the source is. How do I tell VisualVM where to look?

Original source