Hi, Takuya,

I know you've been busy with your work thing. My experience told me that
the start is always hard. I had planned to write you on Jupiter and Eclipse
a week ago but decided to try it by myself first. Here are the things I did
on Jupiter.

(1) Made it OSGi bundle compatible. Bassically it came with a new file under
  plugin folder META-INF\MANIFEST.MF, which represents plugin.xml in general.
Inside this file there are a bunch stuff about plugin configurations. Below is
  the codelet of jupiter bundle manifest file:
    Manifest-Version: 1.0
  Bundle-ManifestVersion: 2
  Bundle-Name: %pluginName
  Bundle-SymbolicName: csdl.jupiter; singleton:=true
  Bundle-Version: 3.1.0
  Bundle-Activator: csdl.jupiter.ReviewPlugin
  Bundle-Vendor: %providerName
  Bundle-Localization: plugin
  Require-Bundle: org.junit,
   org.eclipse.ui.ide,
   org.eclipse.ui.views,
   org.eclipse.jface.text,

(2) I took out 3x appendix and made the associated changes
   to hackystat-ALL build configuration.

(3) Changed two failed tests TestProjectMockup.java
    and TestCodeReviewModelEvent.java to use Eclipse test
framework. They are added to a test suite in csdl.jupiter.test.AllPluginTest.
    You can see I have a new ANT task ``pluginTestSuite" to
    test plugin related tests. Technically it can test Jupiter
    views.

I also took out 3x appendix in hackyJupiter and hackyEclipse and upgraded them
to Eclipse 3.1.

These changes are good but I still did not solve the NoClassDefFoundError
when Jupiter Sensor is installed. Below is part of the exception

Root exception:
org.eclipse.core.runtime.CoreException[2]: org.osgi.framework.BundleException: Exception in org.hackystat.stdext.sensor.eclipse.jupiter.JupiterSensorPlugin.start() of bundle org.hackystat.jupiter.

.........

at org.eclipse.core.internal.jobs.Worker.run(Worker.java:76)
Caused by: java.lang.NoClassDefFoundError: csdl/jupiter/event/IReviewIssueModelListener at org.hackystat.stdext.sensor.eclipse.jupiter.JupiterSensorPlugin.start(JupiterSensorPlugin.java:61) at org.eclipse.osgi.framework.internal.core.BundleContextImpl$2.run(BundleContextImpl.java:994)

You can also see it on Jira server http://hackydev.ics.hawaii.edu:8080/browse/HACK-314

Not a coincidence the Jupiter plugin test suffers similar problems too. Here is the exception I got
when I ran ``ant pluginTestSuite" in Jupiter.

     [java] !ENTRY org.eclipse.osgi 2005-09-21 19:25:47.46
     [java] !MESSAGE Application error
     [java] !STACK 1
     [java] java.lang.NoClassDefFoundError: junit/framework/TestListener
     [java]     at java.lang.ClassLoader.defineClass0(Native Method)
     [java]     at java.lang.ClassLoader.defineClass(ClassLoader.java:539)
[java] at org.eclipse.osgi.framework.adaptor.core.DefaultClassLoader.de
fineClass(DefaultClassLoader.java:370)

I spent a lot time on this NoClassDefFoundException and they seem all lead to
bundle class path reference problem. I rechecked feature.xml, plugin.xml
and manifest.mf many times. Progress has been made but at the end I was always
stuck at this NoClassDefFoundError exception.

Despite these errors Jupiter itself is very good and it runs correctly. The most
serious problem now is that Jupiter Sensor will not work well. It will greatly
impact your review data collection. I tested this against Eclipse 3.1M5 and 3.1M6, and JDK1.4.2 as well. The problems still stay, which is quite mysterious because I remembered I used 3.1M6 and maybe JDK1.5 in the summer. You ever demonstrated review
data from all CSDL members. Maybe there is just a small thing I missed.

Basically the problem is on plugin dependency and OSGI bundle class loader. If you
have time please take a look or give me some hints on this. I ran out all my
tricks but still have not got it working correctly. I feel that the key lies on
the dependency between Jupiter and hackyJupiter, but I could be wrong.

Let me know what you think.

Thanks,
Hongbing

Reply via email to