Community
Participate
Working Groups
The standalone packages for MAT are still based on Helios (Eclipse 3.6). Following the activities in bug 364579, I think it would be a good idea to build also the standalone version based on E4. This will require mostly changes in the build.
I started trying out in the IDE to run the MAT product based on e4.2. I submitted a new target definition file which can be used in the IDE. The target contains the sdk.ide and birt features from M3. You need to manually add DTFJ (or have it in the workspace). After setting the target, I create a new run configuration: - go to plugins and switsh to "use only plugins selected below" - select mat & dtfj bundles from the workspace - exclude o.e.mat.test, o.e.mat.test.junit, o.e.mat.jdt - deselect add plugins from the target platform, and then click "add required plugins" - manually select the following * org.eclipse.ui.views.log * org.eclipse.equinox.ds * org.eclipse.equinox.event * org.eclipse.platform * org.eclipse.e4.ui.workbench.addons.swt - once more "add required bundles" and validate With this configuration MAT starts (almost) fine - there are not undesired menu entries. However, the problem Andrew mentioned in bug 364579 persists: >> There was no inspector view, notes view, compare basket, heap dump details view. I debugged and so far my observation is that: - we add all menu items for the "Window" menu - the items are all passed to the jface classes - in org.eclipse.jface.action.MenuManager, update(boolean, boolean), lines 849 - 851 there is a loop which sets all our menu items to "disposed". I don't know if this is some bug, or if we need to do something differently in e4. This we need to research. Andrew, may be you can also have a look? Once we get a better feeling how to run the MAT product from the IDE, I'll try to get the Tycho build use 4.2. My first "blind" attempt to just replace the Helios repository in the parent pom.xml with the one for Juno failed (i.e. build fails).
BTW, for the new target definition see revision 1213 in SVN
I opened bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=372647 for the problem with the disappearing menu items under "Window". I debugged a bit and to me it seems that the problem is not in MAT. I am not sure though if we could add the menu items in a different way, to avoid running into this problem.
For now I fully removed the code dealing with 'dirty' from o.e.mat.ui.rcp.ShowViewMenu. This seems to work fine both in 3.x (well, I tested 3.6) and 4.2. There was another suggestion in bug 372647 - to use CompoundContributionItem. I haven't tried this yet.
As part of bug 376985 Build AIX GTK versions I am trying to upgrade the build to Indigo (3.7.2). Changes so far: Remove motif environments from parent/pom add aix/gtk/ppc, aix/gtk/ppc64 change hpux/motif/ia64_32 to hpux/gtk/ia64_32 remove linux/gtk/ppc Change org.mozilla.rhino to org.mozilla.javascript (Birt change)
changing from indigo to juno gave a problem https://hudson.eclipse.org/hudson/view/Tycho%20+%20Maven/job/tycho-mat-nightly/415/console [INFO] Fetching org.eclipse.swt.win32.win32.x86_64_3.8.0.v3823a.jar.pack.gz (4kB of 1.11MB at 0B/s) from http://download.eclipse.org/releases/juno/201203230900/plugins/ [ERROR] Internal error: java.lang.RuntimeException: Could not determine SWT implementation fragment bundle -> [Help 1] org.apache.maven.InternalErrorException: Internal error: java.lang.RuntimeException: Could not determine SWT implementation fragment bundle at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:168) at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537) at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196) at org.apache.maven.cli.MavenCli.main(MavenCli.java:141) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290) at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409) at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352) Caused by: java.lang.RuntimeException: Could not determine SWT implementation fragment bundle at org.eclipse.tycho.p2.impl.resolver.ProjectorResolutionStrategy.fixSWT(ProjectorResolutionStrategy.java:151) at org.eclipse.tycho.p2.impl.resolver.ProjectorResolutionStrategy.resolve(ProjectorResolutionStrategy.java:110) at org.eclipse.tycho.p2.impl.resolver.P2ResolverImpl.resolveProject(P2ResolverImpl.java:102) at org.eclipse.tycho.p2.impl.resolver.P2ResolverImpl.resolveProject(P2ResolverImpl.java:69) at org.eclipse.tycho.p2.resolver.P2TargetPlatformResolver.doResolvePlatform(P2TargetPlatformResolver.java:342) at org.eclipse.tycho.p2.resolver.P2TargetPlatformResolver.resolvePlatform(P2TargetPlatformResolver.java:162) at org.eclipse.tycho.core.resolver.DefaultTychoDependencyResolver.resolveProject(DefaultTychoDependencyResolver.java:85) at org.eclipse.tycho.core.maven.TychoMavenLifecycleParticipant.afterProjectsRead(TychoMavenLifecycleParticipant.java:91) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:273) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) ... 11 more so it looks like the win32.x86_64 succeeded, but the next failed. Removing mac/carbon got past that problem, but gave: https://hudson.eclipse.org/hudson/view/Tycho%20+%20Maven/job/tycho-mat-nightly/416/console [ERROR] Cannot resolve project dependencies: [ERROR] Software being installed: org.eclipse.mat.dependencies.feature.feature.group 1.2.0.qualifier [ERROR] Missing requirement: org.eclipse.mat.dependencies.feature.feature.group 1.2.0.qualifier requires 'org.apache.commons.el 0.0.0' but it could not be found [ERROR] [ERROR] Internal error: java.lang.RuntimeException: "No solution found because the problem is unsatisfiable.": ["Unable to satisfy dependency from org.eclipse.jdt.core 3.8.1.v_OTDT_r210_201203201248 to org.eclipse.objectteams.otdt.core.patch.feature.group [2.0.0,3.0.0).", "Unable to satisfy dependency from org.eclipse.mat.dependencies.feature.feature.group 1.2.0.qualifier to org.apache.commons.el 0.0.0.", "No solution found because the problem is unsatisfiable."] -> [Help 1] org.apache.maven.InternalErrorException: Internal error: java.lang.RuntimeException: "No solution found because the problem is unsatisfiable.": ["Unable to satisfy dependency from org.eclipse.jdt.core 3.8.1.v_OTDT_r210_201203201248 to org.eclipse.objectteams.otdt.core.patch.feature.group [2.0.0,3.0.0).", "Unable to satisfy dependency from org.eclipse.mat.dependencies.feature.feature.group 1.2.0.qualifier to org.apache.commons.el 0.0.0.", "No solution found because the problem is unsatisfiable."] at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:168) at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537) at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196) at org.apache.maven.cli.MavenCli.main(MavenCli.java:141) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290) at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409) at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352) Caused by: java.lang.RuntimeException: "No solution found because the problem is unsatisfiable.": ["Unable to satisfy dependency from org.eclipse.jdt.core 3.8.1.v_OTDT_r210_201203201248 to org.eclipse.objectteams.otdt.core.patch.feature.group [2.0.0,3.0.0).", "Unable to satisfy dependency from org.eclipse.mat.dependencies.feature.feature.group 1.2.0.qualifier to org.apache.commons.el 0.0.0.", "No solution found because the problem is unsatisfiable."] at org.eclipse.tycho.p2.impl.resolver.ProjectorResolutionStrategy.resolve(ProjectorResolutionStrategy.java:106) at org.eclipse.tycho.p2.impl.resolver.P2ResolverImpl.resolveProject(P2ResolverImpl.java:102) at org.eclipse.tycho.p2.impl.resolver.P2ResolverImpl.resolveProject(P2ResolverImpl.java:69) at org.eclipse.tycho.p2.resolver.P2TargetPlatformResolver.doResolvePlatform(P2TargetPlatformResolver.java:342) at org.eclipse.tycho.p2.resolver.P2TargetPlatformResolver.resolvePlatform(P2TargetPlatformResolver.java:162) at org.eclipse.tycho.core.resolver.DefaultTychoDependencyResolver.resolveProject(DefaultTychoDependencyResolver.java:85) at org.eclipse.tycho.core.maven.TychoMavenLifecycleParticipant.afterProjectsRead(TychoMavenLifecycleParticipant.java:91) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:273) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) ... 11 more Reverting to indigo.
See http://download.eclipse.org/eclipse/downloads/drops4/R-4.2-201206081400/news/eclipse-news-part3.html#jetty for changes to Jetty. Could we use the org.eclipse.help (and perhaps org.eclipse.rcp) features instead of listing all the plug-in dependencies?
Andrew, I worked on this in the last days and have locally a version which builds the RCPs based on 4.2. At least for win32, I haven't tried the other platfors. I am defining in our parent pom.xml two profiles - one for juno and one for indigo, so that we can easily switch between them. I'll post my changes in the next days. And yes, one of the changes I am making is to drop completely the mat dependencies feature, and have a product file looking like this: <plugins> </plugins> <features> <feature id="org.eclipse.mat.ui.rcp.feature" version="1.2.1.qualifier"/> <feature id="org.eclipse.rcp"/> <feature id="org.eclipse.equinox.p2.user.ui"/> <feature id="org.eclipse.help"/> </features> This seems to work fine. As I said, I need a bit more time, but I'm almost there...
We may need to add org.eclipse.ui.views.log as a plug-in to get the error log. The other way is this, but it just starts an OS text editor. Help > About Eclipse Memory Analyzer > Installation Details > Configuration > View Error Log
I solved this by adding the o.e.ui.views.log bundle to the imports in o.e.mat.ui.rcp.feature/feature.xml. This works fine. Another thing I'm doing as part of this effort is to switch to tycho 0.16.0.
I've checked in my changes (SVN revisions 169, 170). Now there is also a profile for building against juno (build-juno-rcp). Currently I only specified the win 32 and win 64 platforms to be build. I have to check what is the full list of platforms we could add there and then add it. I had to re-introduce the use of target definitions within the Tycho build. This time I made the prepare_build step to copy the mat-juno and mat-indigo files and modify the copies with a local path to the DTFJ repo. I added the names of the copies mat-build-indigo/mat-build-juno to the SVN ignore list, so that local builds do not result in any changes shown for commit. Andrew, ist there any channel through which we could request that the zip located at: ftp://ftp.software.ibm.com/software/java/support/tools/dtfj/dtfj-updatesite.zip contains a p2 repository and not an old-style update site? If we get a p2 repo there, then we could remove the whole prepare_build step. Currently, one can use a special jar:ftp url in the IDE, but as there is no p2 repo on the other side, Tycho doesn't work with it. In summary - to build locally the RCPs based on Juno: - sync to the latest change - run the prepare_build step to get the target definitions for the build prepared - run the maven/tycho build with the profile build-juno-rcp, i.e. add -P build-juno-rcp to the mvn command line Let me know if this works for you. I kept the Hudson build still building against Indigo.
There is an updated dtfj-updatesite.zip here: ftp://ftp.software.ibm.com/software/java/support/tools/dtfj/dtfj-updatesite.zip which now contains p2 contents.xml and artifacts.xml
Thanks a lot! I tried it locally and managed to build with Tycho (without the additional preparation step) having the following snippet in the target definition: <location includeAllPlatforms="false" includeMode="planner" type="InstallableUnit"> <unit id="com.ibm.dtfj.feature.feature.group" version="0.0.0"/> <repository location="jar:ftp://ftp.software.ibm.com/software/java/support/tools/dtfj/dtfj-updatesite.zip!/"/> </location> I only had to set proxy, as I am behind a firewall. I'll have to try it on Eclipse build server. The same target platform works fine also in the IDE.
The latest DTFJ might be broken, at least for non IBM VMs. https://hudson.eclipse.org/hudson/view/Tycho%20+%20Maven/job/tycho-mat-nightly/455/testReport/ 83 failures (+83) , 36 skipped (±0) Error Message com/ibm/recordio/IRecordFile Stacktrace java.lang.NoClassDefFoundError: com/ibm/recordio/IRecordFile at com.ibm.dtfj.utils.file.FileManager.getManager(FileManager.java:120) at com.ibm.dtfj.image.j9.ImageFactory.getImage(ImageFactory.java:131) at org.eclipse.mat.dtfj.DTFJIndexBuilder.getDynamicDTFJDump(DTFJIndexBuilder.java:8591) at org.eclipse.mat.dtfj.DTFJIndexBuilder.getUncachedDump(DTFJIndexBuilder.java:8364) at org.eclipse.mat.dtfj.DTFJIndexBuilder.getDump(DTFJIndexBuilder.java:8177) at org.eclipse.mat.dtfj.DTFJIndexBuilder.fill(DTFJIndexBuilder.java:872) at org.eclipse.mat.parser.internal.SnapshotFactoryImpl.parse(SnapshotFactoryImpl.java:209) at org.eclipse.mat.parser.internal.SnapshotFactoryImpl.openSnapshot(SnapshotFactoryImpl.java:120) at org.eclipse.mat.snapshot.SnapshotFactory.openSnapshot(SnapshotFactory.java:145) at org.eclipse.mat.tests.TestSnapshots.getSnapshot(TestSnapshots.java:136) at org.eclipse.mat.tests.TestSnapshots.getSnapshot(TestSnapshots.java:75) at org.eclipse.mat.tests.collect.ExtractCollectionEntriesTest.testHashMapEntries_IBM_JDK6(ExtractCollectionEntriesTest.java:43) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) at org.junit.runners.ParentRunner.run(ParentRunner.java:236) at org.junit.runners.Suite.runChild(Suite.java:128) at org.junit.runners.Suite.runChild(Suite.java:24) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) at org.junit.runners.ParentRunner.run(ParentRunner.java:236) at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:53) at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:123) at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:104) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:164) at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:110) at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:175) at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcess(SurefireStarter.java:123) at org.eclipse.tycho.surefire.osgibooter.OsgiSurefireBooter.run(OsgiSurefireBooter.java:85) at org.eclipse.tycho.surefire.osgibooter.HeadlessTestApplication.run(HeadlessTestApplication.java:21) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.equinox.internal.app.EclipseAppContainer.callMethodWithException(EclipseAppContainer.java:587) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:198) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577) at org.eclipse.equinox.launcher.Main.run(Main.java:1410) at org.eclipse.equinox.launcher.Main.main(Main.java:1386) Caused by: java.lang.ClassNotFoundException: com.ibm.recordio.IRecordFile at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:513) at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429) at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417) at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107) at java.lang.ClassLoader.loadClass(ClassLoader.java:248) ... 68 more
An updated DTFJ meant that the builds returned to normal on 21 November 2012 https://hudson.eclipse.org/hudson/view/Tycho%20+%20Maven/job/tycho-mat-nightly/461/
I opened Bug 427081 for building standalone MAT on top of Kepler. This bug is now obsolete.