|
Re: changes in 3.0M6 and 3.0M7 [message #195641 is a reply to message #195608] |
Mon, 16 February 2004 22:28 ![Go to previous message Go to previous message](theme/Solstice/images/up.png) ![Go to next message Go to next message](theme/Solstice/images/down.png) |
Eclipse User![Friend of Eclipse Friend](/donate/web-api/friends_decorator.php?email=) |
|
|
|
Originally posted by: bobhicks.adelphia.net
Jeremiah Richardson wrote:
> I am having a problem with 3.0M6 and 3.0M7. I wrote plugins that worked
> in eclipse 2.1.2 and I tried to use them in 3.0M6 and now 3.0M7 and I get
> errors saying that my plugin could not load its class. The plugin is an
> import wizard and the wizard will not start. I was wondering if they were
> any changes made in M6 or M7 that would cause my plugin to no longer find
> the classes it needs to run. Any information would be helpful.
>
> Jeremiah Richardson
>
The API changed. You would have to read the new API.
|
|
|
Re: changes in 3.0M6 and 3.0M7 [message #195689 is a reply to message #195641] |
Mon, 16 February 2004 22:54 ![Go to previous message Go to previous message](theme/Solstice/images/up.png) ![Go to next message Go to next message](theme/Solstice/images/down.png) |
Eclipse User![Friend of Eclipse Friend](/donate/web-api/friends_decorator.php?email=) |
|
|
|
Originally posted by: alvin.nowhere.com
i thought there was a compatibility layer that enabled 2.x api plugins
to run. i think the compatibility layer is a work in progress, but is
pretty good recently. only the 3.0 api has changed, so your 2.x plugin
might still work with later versions of eclipse. have you tried it with
the latest version (M7)?
of course, i could be way off base here...
-alvin
--
Alvin Thompson
Navy: 34
Army: 6
|
|
|
Re: changes in 3.0M6 and 3.0M7 [message #195777 is a reply to message #195689] |
Tue, 17 February 2004 02:13 ![Go to previous message Go to previous message](theme/Solstice/images/up.png) ![Go to next message Go to next message](theme/Solstice/images/down.png) |
Eclipse User![Friend of Eclipse Friend](/donate/web-api/friends_decorator.php?email=) |
|
|
|
Originally posted by: bobhicks.adelphia.net
Alvin Thompson wrote:
> i thought there was a compatibility layer that enabled 2.x api plugins
> to run. i think the compatibility layer is a work in progress, but is
> pretty good recently. only the 3.0 api has changed, so your 2.x plugin
> might still work with later versions of eclipse. have you tried it with
> the latest version (M7)?
>
> of course, i could be way off base here...
>
> -alvin
>
>
I have tried a few plugins that are made for 2.x but fail in M7.
|
|
|
|
Re: changes in 3.0M6 and 3.0M7 [message #196238 is a reply to message #196095] |
Tue, 17 February 2004 16:59 ![Go to previous message Go to previous message](theme/Solstice/images/up.png) ![Go to next message Go to next message](theme/Solstice/images/down.png) |
Eclipse User![Friend of Eclipse Friend](/donate/web-api/friends_decorator.php?email=) |
|
|
|
Originally posted by: nick_edgar._no.spam.please_.ca.ibm.com
Jeremiah,
There have been some breaking API changes in 3.0. For full details, see the
porting guide:
http://dev.eclipse.org/viewcvs/index.cgi/~checkout~/org.ecli pse.platform.doc.isv/porting/eclipse_3_0_porting_guide.html
Most of these have been due to the Rich Client Platform effort. For more
details about this, see the RCP proposal page:
http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/plat form-ui-home/rcp-proposal/rich_client_platform_facilities.ht ml
There have also been significant changes to the Eclipse runtime, which is
now running on OSGi.
Our aim is to allow full binary compatibility of 2.1 plugins on 3.0. That
is, you should be able to take your 2.1 plugin(s), and with no changes drop
it into the plugins directory of a 3.0 Eclipse and have it just work.
Of course, this assumes that your plugin is using API properly and is not
referring to internals of the Workbench or other plugins. If a plugin
refers to internals, all bets are off for compatibility. See the API rules
of engagement doc at
http://eclipse.org/articles/Article-API%20use/eclipse-api-us age-rules.html.
Here is the compatibility story in brief. Again, for full details see the
porting guide.
The runtime distinguishes between 2.1 (and earlier) plugins and 3.0 plugins
via a new tag in the plugin manifest file (plugin.xml). Plugin manifests
are rewritten internally by the runtime to adjust to the new plugin
organization and extension point refactorings. This does not handle other
breaking API changes though. For these, there are two compatibility layers.
For API changes in the Runtime, there is the
org.eclipse.core.runtime.compatibility plugin. This handles 99% of the
breaking API changes due to OSGi. The rest are fringe cases that almost
nobody should notice.
For the UI, there is the org.eclipse.ui.workbench.compatibility fragment.
This has to pull some real magic because some methods have simply been
removed from Workbench API classes. Most notably, IWorkbenchPage has lost
its openEditor(IFile, *) methods (see the porting guide for why). The
fragment adjusts for this using some classpath magic. The
org.eclipse.ui.workbench.compatibility fragment does not currently
handle -all- the breaking API changes due to the RCP changes, but does
handle the frequently used methods. We are actively working on improving it
for M8. It is possible that you have hit a hole here.
We have tested a number of 3rd party plugins off of
www.eclipseplugincentral.com. Most of the ones we have tried failed due to
references to internals which have changed. Others just work (are
successfully going through the org.eclipse.ui.workbench.compatibility
fragment). We have not yet encountered any that fail due to API changes in
3.0, but as I said above, there are still some holes we need to fill.
Could you provide a stack trace of where your plugin is failing? If this is
not due to references to internals, please file a bug report against the
relevant component (Platform Core if it's a runtime issue, or Platform UI if
it's a UI issue). Even if it is due to an internal reference, I'd still be
interested in seeing the stack.
Regards,
Nick
"Jeremiah Richardson" <jerry_234@hotmail.com> wrote in message
news:c0t5d1$gma$1@eclipse.org...
> So, what exactly would need to be done to get this pugin working for M6 or
> M7. Sorry, I don't exactly know what it means to read the new api. Also,
> am I correct in assuming that after fixing this for M6 and M7 that the
> plugin will no longer work for 2.x? thank you for your help.
>
> Jeremiah Richardson
>
|
|
|
|
|
|
|
Re: changes in 3.0M6 and 3.0M7 [message #197688 is a reply to message #196515] |
Thu, 19 February 2004 14:02 ![Go to previous message Go to previous message](theme/Solstice/images/up.png) ![Go to next message Go to next message](theme/Solstice/images/down.png) |
Eclipse User![Friend of Eclipse Friend](/donate/web-api/friends_decorator.php?email=) |
|
|
|
Originally posted by: nick_edgar._no.spam.please_.ca.ibm.com
Could you please provide the plugin.xml for your plugin and the
corresponding manifest file from <yourInstallDir>/.config/manifests? Please
enter a problem report against Platform-UI with these two files attached and
let me know the PR number (or just cc me on it).
The stack below looks like, while trying to resolve
com.ibm.ws.build.plugin.create.PluginImportWizard, it had an error loading
the corresponding plugin's plugin class because it was unable to resolve the
superclass, AbstractUIPlugin.
Did you make any change to your plugin.xml file, or is it the same as it was
when running against 2.1?
Nick
"Jeremiah Richardson" <jerry_234@hotmail.com> wrote in message
news:c0tt0t$hlu$1@eclipse.org...
> Here's the .log file for an attempt to run the import Wizard that is
> failing...
>
>
> !SESSION Feb 17, 2004 15:21:18.700
> ---------------------------------------------
> java.fullversion=J2RE 1.4.1 IBM Windows 32 build cn1411-20031011 (JIT
> enabled: jitc)
> BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=en_US
> !ENTRY org.eclipse.core.runtime 4 1 Feb 17, 2004 15:21:18.700
> !MESSAGE Plug-in com.ibm.ws.build.plugin was unable to load class
> com.ibm.ws.build.plugin.create.PluginImportWizard.
> !STACK 0
> org.osgi.framework.BundleException: Exception in
> org.eclipse.core.internal.compatibility.PluginActivator.star t()
> at
>
org.eclipse.osgi.framework.internal.core.BundleContext.start Activator(Bundle
Context.java:1071)
> at
>
org.eclipse.osgi.framework.internal.core.BundleContext.start (BundleContext.j
ava:991)
> at
>
org.eclipse.osgi.framework.internal.core.BundleHost.startWor ker(BundleHost.j
ava:403)
> at org.eclipse.osgi.framework.internal.core.Bundle.start(Bundle .java:312)
> at
>
org.eclipse.core.internal.registry.ConfigurationElement.crea teExecutableExte
nsion(ConfigurationElement.java:133)
> at
>
org.eclipse.core.internal.registry.ConfigurationElement.crea teExecutableExte
nsion(ConfigurationElement.java:125)
> at
>
org.eclipse.core.internal.registry.ConfigurationElement.crea teExecutableExte
nsion(ConfigurationElement.java:114)
> at org.eclipse.ui.internal.WorkbenchPlugin$1.run(WorkbenchPlugi n.java:171)
> at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator .java:84)
> at
>
org.eclipse.ui.internal.WorkbenchPlugin.createExtension(Work benchPlugin.java
:168)
> at
>
org.eclipse.ui.internal.dialogs.WorkbenchWizardElement.creat eExecutableExten
sion(WorkbenchWizardElement.java:96)
> at
>
org.eclipse.ui.internal.dialogs.ImportWizard$1.createWizard( ImportWizard.jav
a:60)
> at
>
org.eclipse.ui.internal.dialogs.WorkbenchWizardNode$2.run(Wo rkbenchWizardNod
e.java:133)
> at
>
org.eclipse.core.internal.runtime.InternalPlatform.run(Inter nalPlatform.java
:819)
> at org.eclipse.core.runtime.Platform.run(Platform.java:493)
> at
>
org.eclipse.ui.internal.dialogs.WorkbenchWizardNode$1.run(Wo rkbenchWizardNod
e.java:114)
> at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator .java:84)
> at
>
org.eclipse.ui.internal.dialogs.WorkbenchWizardNode.getWizar d(WorkbenchWizar
dNode.java:112)
> at
>
org.eclipse.jface.wizard.WizardSelectionPage.getNextPage(Wiz ardSelectionPage
..java:96)
> at
> org.eclipse.jface.wizard.WizardDialog.nextPressed(WizardDial og.java:677)
> at
> org.eclipse.jface.wizard.WizardDialog.buttonPressed(WizardDi alog.java:316)
> at org.eclipse.jface.dialogs.Dialog$1.widgetSelected(Dialog.jav a:402)
> at
> org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListe ner.java:89)
> at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java (Compiled
> Code))
> at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:833)
> at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.ja va:2348)
> at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java :2029)
> at org.eclipse.jface.window.Window.runEventLoop(Window.java:647 )
> at org.eclipse.jface.window.Window.open(Window.java:627)
> at
>
org.eclipse.ui.actions.ImportResourcesAction.run(ImportResou rcesAction.java:
149)
> at org.eclipse.jface.action.Action.runWithEvent(Action.java:881 )
> at
>
org.eclipse.jface.action.ActionContributionItem.handleWidget Selection(Action
ContributionItem.java:536)
> at
>
org.eclipse.jface.action.ActionContributionItem.access$2(Act ionContributionI
tem.java:488)
> at
>
org.eclipse.jface.action.ActionContributionItem$5.handleEven t(ActionContribu
tionItem.java:420)
> at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java (Compiled
> Code))
> at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:833)
> at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.ja va:2348)
> at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java :2029)
> at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.jav a:1550)
> at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1526)
> at
>
org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:265)
> at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:139)
> at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplicatio n.java:47)
> at
>
org.eclipse.core.internal.runtime.PlatformActivator$1.run(Pl atformActivator.
java:257)
> at
>
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:104)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
>
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce ssorImpl.java:79
)
> at
>
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe thodAccessorImpl
..java:41)
> at java.lang.reflect.Method.invoke(Method.java:386)
> at org.eclipse.core.launcher.Main.basicRun(Main.java:279)
> at org.eclipse.core.launcher.Main.run(Main.java:742)
> at org.eclipse.core.launcher.Main.main(Main.java:581)
> Nested exception:
> java.lang.NoClassDefFoundError: org/eclipse/ui/plugin/AbstractUIPlugin
> at java.lang.ClassLoader.defineClass0(Native Method)
> at java.lang.ClassLoader.defineClass(ClassLoader.java(Compiled Code))
> at
>
org.eclipse.osgi.framework.internal.defaultadaptor.DefaultCl assLoader.define
Class(DefaultClassLoader.java(Inlined
> Compiled Code))
> at
>
org.eclipse.core.runtime.adaptor.EclipseClassLoader.defineCl ass(EclipseClass
Loader.java(Compiled
> Code))
> at
>
org.eclipse.osgi.framework.internal.defaultadaptor.DefaultCl assLoader.findCl
assImpl(DefaultClassLoader.java(Compiled
> Code))
> at
>
org.eclipse.osgi.framework.internal.defaultadaptor.DefaultCl assLoader.findCl
ass(DefaultClassLoader.java(Compiled
> Code))
> at
>
org.eclipse.osgi.framework.adaptor.BundleClassLoader.findLoc alClass(BundleCl
assLoader.java(Inlined
> Compiled Code))
> at
>
org.eclipse.core.runtime.adaptor.EclipseClassLoader.findLoca lClass(EclipseCl
assLoader.java(Compiled
> Code))
> at
>
org.eclipse.osgi.framework.internal.core.BundleLoader.findLo calClass(BundleL
oader.java(Compiled
> Code))
> at
>
org.eclipse.osgi.framework.internal.core.BundleLoader.requir eClass(BundleLoa
der.java(Inlined
> Compiled Code))
> at
>
org.eclipse.osgi.framework.internal.core.BundleLoader.findRe quiredClass(Bund
leLoader.java(Compiled
> Code))
> at
>
org.eclipse.osgi.framework.internal.core.BundleLoader.findCl ass(BundleLoader
..java(Compiled
> Code))
> at
>
org.eclipse.osgi.framework.adaptor.BundleClassLoader.loadCla ss(BundleClassLo
ader.java(Compiled
> Code))
> at
>
org.eclipse.osgi.framework.internal.core.BundleLoader.loadCl ass(BundleLoader
..java:264)
> at
>
org.eclipse.osgi.framework.internal.core.BundleHost.loadClas s(BundleHost.jav
a:331)
> at
>
org.eclipse.osgi.framework.internal.core.Bundle.loadClass(Bu ndle.java:1368)
> at
>
org.eclipse.core.internal.plugins.PluginDescriptor.internalD oPluginActivatio
n(PluginDescriptor.java:471)
> at
>
org.eclipse.core.internal.plugins.PluginDescriptor.doPluginA ctivation(Plugin
Descriptor.java:438)
> at
>
org.eclipse.core.internal.plugins.PluginDescriptor.getPlugin (PluginDescripto
r.java:406)
> at
>
org.eclipse.core.internal.compatibility.PluginActivator.star t(PluginActivato
r.java:48)
> at
>
org.eclipse.osgi.framework.internal.core.BundleContext$1.run (BundleContext.j
ava:1054)
> at java.security.AccessController.doPrivileged(Native Method)
> at
>
org.eclipse.osgi.framework.internal.core.BundleContext.start Activator(Bundle
Context.java:1050)
> at
>
org.eclipse.osgi.framework.internal.core.BundleContext.start (BundleContext.j
ava:991)
> at
>
org.eclipse.osgi.framework.internal.core.BundleHost.startWor ker(BundleHost.j
ava:403)
> at org.eclipse.osgi.framework.internal.core.Bundle.start(Bundle .java:312)
> at
>
org.eclipse.core.internal.registry.ConfigurationElement.crea teExecutableExte
nsion(ConfigurationElement.java:133)
> at
>
org.eclipse.core.internal.registry.ConfigurationElement.crea teExecutableExte
nsion(ConfigurationElement.java:125)
> at
>
org.eclipse.core.internal.registry.ConfigurationElement.crea teExecutableExte
nsion(ConfigurationElement.java:114)
> at org.eclipse.ui.internal.WorkbenchPlugin$1.run(WorkbenchPlugi n.java:171)
> at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator .java:84)
> at
>
org.eclipse.ui.internal.WorkbenchPlugin.createExtension(Work benchPlugin.java
:168)
> at
>
org.eclipse.ui.internal.dialogs.WorkbenchWizardElement.creat eExecutableExten
sion(WorkbenchWizardElement.java:96)
> at
>
org.eclipse.ui.internal.dialogs.ImportWizard$1.createWizard( ImportWizard.jav
a:60)
> at
>
org.eclipse.ui.internal.dialogs.WorkbenchWizardNode$2.run(Wo rkbenchWizardNod
e.java:133)
> at
>
org.eclipse.core.internal.runtime.InternalPlatform.run(Inter nalPlatform.java
:819)
> at org.eclipse.core.runtime.Platform.run(Platform.java:493)
> at
>
org.eclipse.ui.internal.dialogs.WorkbenchWizardNode$1.run(Wo rkbenchWizardNod
e.java:114)
> at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator .java:84)
> at
>
org.eclipse.ui.internal.dialogs.WorkbenchWizardNode.getWizar d(WorkbenchWizar
dNode.java:112)
> at
>
org.eclipse.jface.wizard.WizardSelectionPage.getNextPage(Wiz ardSelectionPage
..java:96)
> at
> org.eclipse.jface.wizard.WizardDialog.nextPressed(WizardDial og.java:677)
> at
> org.eclipse.jface.wizard.WizardDialog.buttonPressed(WizardDi alog.java:316)
> at org.eclipse.jface.dialogs.Dialog$1.widgetSelected(Dialog.jav a:402)
> at
> org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListe ner.java:89)
> at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java (Compiled
> Code))
> at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:833)
> at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.ja va:2348)
> at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java :2029)
> at org.eclipse.jface.window.Window.runEventLoop(Window.java:647 )
> at org.eclipse.jface.window.Window.open(Window.java:627)
> at
>
org.eclipse.ui.actions.ImportResourcesAction.run(ImportResou rcesAction.java:
149)
> at org.eclipse.jface.action.Action.runWithEvent(Action.java:881 )
> at
>
org.eclipse.jface.action.ActionContributionItem.handleWidget Selection(Action
ContributionItem.java:536)
> at
>
org.eclipse.jface.action.ActionContributionItem.access$2(Act ionContributionI
tem.java:488)
> at
>
org.eclipse.jface.action.ActionContributionItem$5.handleEven t(ActionContribu
tionItem.java:420)
> at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java (Compiled
> Code))
> at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:833)
> at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.ja va:2348)
> at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java :2029)
> at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.jav a:1550)
> at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1526)
> at
>
org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:265)
> at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:139)
> at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplicatio n.java:47)
> at
>
org.eclipse.core.internal.runtime.PlatformActivator$1.run(Pl atformActivator.
java:257)
> at
>
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:104)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
>
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce ssorImpl.java:79
)
> at
>
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe thodAccessorImpl
..java:41)
> at java.lang.reflect.Method.invoke(Method.java:386)
> at org.eclipse.core.launcher.Main.basicRun(Main.java:279)
> at org.eclipse.core.launcher.Main.run(Main.java:742)
> at org.eclipse.core.launcher.Main.main(Main.java:581)
>
>
|
|
|
Re: changes in 3.0M6 and 3.0M7 [message #198170 is a reply to message #197613] |
Fri, 20 February 2004 03:20 ![Go to previous message Go to previous message](theme/Solstice/images/up.png) ![Go to next message Go to next message](theme/Solstice/images/down.png) |
Eclipse User![Friend of Eclipse Friend](/donate/web-api/friends_decorator.php?email=) |
|
|
|
Originally posted by: jeff_mcaffer.REMOVE.ca.ibm.com
Yes. I'm assuming your search and replace in plugin.xml was to remove that
line? I would note further that if you removed the <?eclipse...?>
directive, you could also remove all <reqruies> for
org.eclipse.core.runtime.*. specing a requires on runtime was never
required in <= 2.1, it was automatically added for you. In 3.0, the runtime
(and PDE) detects that your plugin is "legacy" and so automagically adds a
prereq on runtime.compatibility (which transparently gets you runtime
itself).
So to summarize - You basically undid all the "porting" work since it was
not really needed and was getting you into trouble. Well done!
Some of the confusion is due to changes in the story. As more people have
given us feedback with different scenarios etc, we have been able to improve
the story to the point where you really don't *have* to do much. Of course,
we recommend that you adopt the 3.0 structures and mechanisms but I suggest
you do that from the comfortable position of having your existing plugins
actually running.
Jeff
p.s., I am a little confused about needing to delete the workspace. As of
3.0 the runtime does not really store anything of interest in the workspace.
Perhaps you needed to do this while you were sorting thigns out but once you
are in a happy place you should not have to do that.
"rich boakes" <rich.boakes@port.ac.uk> wrote in message
news:c126sh$g52$1@eclipse.org...
> I think I've solved mine, so this might help...
>
> I went through my (20) plugins and removed all the META-INF directories
> which had been auto generated, then did a search and replace on all
> <?eclipse version="3.0"?> entries to take me back towards 2.1
> compatibility. I also removed all references to org.eclipse.runtime,
> leaving only org.eclipse.runtime.compatibility in it's place.
>
> So, back to square one, nearly, I think the key step that was missing
> was based on something Bob Foster wrote in [Re: Problems Migrating 2.1.2
> to 3.0M6]... I changed my "Run..." configuration so that it has "clean
> workspace data before launching" ticked.
>
> This was the crucial change for me - it's not *all* working yet, but it
> has at least moved me onto the next errors which are good old-fashioned
> SWT ones that are easier to track down.
>
> HTH
> Rich
>
> Jeremiah Richardson wrote:
> > This still didn't fix it, any further help would be great...
> >
> > Jeremiah Richardson
|
|
|
|
Powered by
FUDForum. Page generated in 0.05224 seconds