[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[tracecompass-dev] Fw: Question regarding CallStackView changes for trace Compass 4.1

This may be some kind of a setup error on my part. I was running my code as a RCP launched as a runtime instance when I got these exceptions. I ran a Maven build of my RCP code and ran that stand-alone. This error does not occur, and neither does some odd loop at RCP exit. I'm not sure why, since I am using an Eclipse for Committers 9/17/2018 build as my IDE, and I don't see any Trace Compass plugins installed in that IDE.

I tried looking for references to the referenced provisional package using both Java and File searches of my workspace and also looking at dependencies in the plugins dependencies view and not finding any references.

So, at this point things seem to be working properly. I'm kind of curious what could have been going wrong, but it doesn't seem urgent.
Dave
----- Forwarded by David Wootton/Poughkeepsie/Contr/IBM on 10/03/2018 10:11 AM -----

From: David Wootton/Poughkeepsie/Contr/IBM
To: "tracecompass developer discussions" <tracecompass-dev@xxxxxxxxxxx>
Date: 10/02/2018 04:30 PM
Subject: Question regarding CallStackView changes for trace Compass 4.1




I've made a number of changes to my plugin code in order to update to Trace Compass 4.1 from Trace Compass 3.1. I've updated my code to use replacement classes in org.eclipse.tracecompass.analysis.profiling* and tried to model after the example Gerrit patch you sent me a link to. At this point I can load my trace and have it appear in my trace timeline view that I now extend from FlameChartView instead of CallStackView. The trace appears to display correctly and the work remaining for me seems to be mainly changes to my classes extending CallStackDataProvider and FlameGraphPresentationProvider.

One problem I ran into is that I am getting a few exceptions logged with long tracebacks ending with

Caused by: java.lang.NoClassDefFoundError: org/eclipse/tracecompass/internal/provisional/tmf/core/model/tree/ITmfTreeDataProvider
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
at java.lang.Class.getConstructor0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:184)
... 150 more
Caused by: java.lang.ClassNotFoundException: org.eclipse.tracecompass.internal.provisional.tmf.core.model.tree.ITmfTreeDataProvider cannot be found by org.eclipse.tracecompass.lttng2.ust.core_3.3.0.201803071910
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:484)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:395)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:387)
at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:150)
at java.lang.ClassLoader.loadClass(Unknown Source)

I think I am missing a dependency on some Trace Compass plugin, but not sure what. If I look at Trace Compass 4.1 source I find ITmfTreeDataProvider only defined in org.eclipse.tracecompass.tmf.core.model.tree so I'm not sure how I am getting the reference to a plugin in org.eclipse.tracecompass.internal.provisional.tmf.core.model.tree. I also don't directly reference the org.eclipse.tracecompass.lttng2.ust.core anywhere in my source, which I checked by using the Eclipse file search menu option.

I've obviously done something wrong, but not sure what.

Everything in my Eclipse workspace builds cleanly. I use a target definition file in my workspace and that's set to refer to download.eclipse.org/tracecompass/releases/4.1.0/repository

One thing I did differently from the example code link you sent me is that my analysis module classes extend org.eclipse.tracecompass.analysis.profiling.core.callstack.CallStackAnalysis instead of org.eclipse.tracecompass.internal.lttng2.ust.core.callstack.LttngUstCallStackAnalysis but that seemed like a reasonable thing to do.

Any suggestions?

Thanks
Dave