Hi, Folks,
Thaks for your attention. I believe I solved the problem already. Jupiter,
Jupiter Sensor and Hackystat Eclipse Sensor are working fine now in
my environment, which is JDK1.4.2_09, Eclipse 3.1.
Since release manifest file is required for all Eclipse plug-ins otherwise it
will generate manifest from plugin.xml file. It looks like Eclipse did not
handle this upgrade smoothly enough. Present user may have problems
with the upgrade. I will test it after we make jupiter and hackystat release.
Plugin related tests ProjectMockupTest and CodeReviewModelEventTest
can pass from now on. Plugin org.apache.ant should depend on plugin
org.junit but it does not do so. I don't know it is like this but we can solve
it by changing dependency with jupiter ANT build.
Cheers,
Hongbing
At 07:52 PM 9/21/2005, Hongbing Kou wrote:
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