I havebeen unable to run this. The error is:
java.lang.NoSuchMethodError: cern.colt.Sorting.parallelQuickSort([IIILcern/colt/function/tint/IntComparator;)V at cern.colt.matrix.tfloat.algo.FloatSorting.runSort(Unknown Source) at cern.colt.matrix.tfloat.algo.FloatSorting.sortIndex(Unknown Source) at ... [more stuff that I will send if needed] This type of error was discussed in the past, most recently (which I found): https://list.nih.gov/cgi-bin/wa.exe?A2=ind1105&L=IMAGEJ&P=R35667&1=IMAGEJ&9=A&J=on&d=No+Match%3BMatch%3BMatches&z=4 The problem then was outdated parallelcolt in the load path. So I purged my system of all of the old parallelcolt jars, and made sure I have only parallelcolt-0.9.4, which I believe is the latest. I also removed some other plugins that appeared to have parallelcolt methods in them. Still, so luck. So I turn to the list. Any ideas on how to solve this problem? Thanks in advance. --aryeh -- Aryeh Weiss Faculty of Engineering Bar Ilan University Ramat Gan 52900 Israel Ph: 972-3-5317638 FAX: 972-3-7384051 -- ImageJ mailing list: http://imagej.nih.gov/ij/list.html |
Hi Aryeh,
On Sun, 1 Sep 2013, Aryeh Weiss wrote: > java.lang.NoSuchMethodError: > cern.colt.Sorting.parallelQuickSort([IIILcern/colt/function/tint/IntComparator;)V > at cern.colt.matrix.tfloat.algo.FloatSorting.runSort(Unknown Source) > at cern.colt.matrix.tfloat.algo.FloatSorting.sortIndex(Unknown Source) > at ... [more stuff that I will send if needed] > > This type of error was discussed in the past, most recently (which I found): > https://list.nih.gov/cgi-bin/wa.exe?A2=ind1105&L=IMAGEJ&P=R35667&1=IMAGEJ&9=A&J=on&d=No+Match%3BMatch%3BMatches&z=4 > > The problem then was outdated parallelcolt in the load path. So I purged my > system of all of the old parallelcolt jars, and made sure I have only > parallelcolt-0.9.4, which I believe is the latest. The problem is that parallelcolt is developed in a slightly backwards-incompatible manner. That, combined with the fact that parallel iterative convolution dependended on a different (and incompatible) version of parallelcolt than superresolution prevented the inclusion of those otherwise very interesting plugins into Fiji. In your case, it might also be one of those creative .jar files that bundle other projects which leads to all kinds of unpleasant surprises. To find out what .jar file contains the offending Sorting class, use Fiji's 'Find Jar For Class' script via the command launcher and provide the full class name: cern.colt.Sorting Ciao, Johannes -- ImageJ mailing list: http://imagej.nih.gov/ij/list.html |
Hi Johannes,
Thank you for your reply, which is right on target. On 9/4/13 9:17 PM, Johannes Schindelin wrote: > Hi Aryeh, > > On Sun, 1 Sep 2013, Aryeh Weiss wrote: > >> java.lang.NoSuchMethodError: >> cern.colt.Sorting.parallelQuickSort([IIILcern/colt/function/tint/IntComparator;)V >> at cern.colt.matrix.tfloat.algo.FloatSorting.runSort(Unknown Source) >> at cern.colt.matrix.tfloat.algo.FloatSorting.sortIndex(Unknown Source) >> at ... [more stuff that I will send if needed] >> >> This type of error was discussed in the past, most recently (which I found): >> https://list.nih.gov/cgi-bin/wa.exe?A2=ind1105&L=IMAGEJ&P=R35667&1=IMAGEJ&9=A&J=on&d=No+Match%3BMatch%3BMatches&z=4 >> >> The problem then was outdated parallelcolt in the load path. So I purged my >> system of all of the old parallelcolt jars, and made sure I have only >> parallelcolt-0.9.4, which I believe is the latest. > > The problem is that parallelcolt is developed in a slightly > backwards-incompatible manner. That, combined with the fact that parallel > iterative convolution dependended on a different (and incompatible) > version of parallelcolt than superresolution prevented the inclusion of > those otherwise very interesting plugins into Fiji. > > In your case, it might also be one of those creative .jar files that > bundle other projects which leads to all kinds of unpleasant surprises. > > To find out what .jar file contains the offending Sorting class, use > Fiji's 'Find Jar For Class' script via the command launcher and provide > the full class name: cern.colt.Sorting > I found the class in colocalization-pipeline and in colt-1.2.0.jar I uninstalled colocalization-pipeline and disabled (for now) colt-1.2.0.jar (I renamed it to colt-1.2.0.jar-dist). This allows parallel iterative deconvolution to run, but I do not think that it is a good long term solution, because the updater "wants" to restore colt, and I prefer to keep the standard distribution of automatically updated files. Also, I dont know what (if anything) will break by disabling colt-1.2.0.jar. Best regards, --aryeh -- Aryeh Weiss Faculty of Engineering Bar Ilan University Ramat Gan 52900 Israel Ph: 972-3-5317638 FAX: 972-3-7384051 -- ImageJ mailing list: http://imagej.nih.gov/ij/list.html |
Hi Aryeh,
On Sat, 7 Sep 2013, Aryeh Weiss wrote: > On 9/4/13 9:17 PM, Johannes Schindelin wrote: > > > > On Sun, 1 Sep 2013, Aryeh Weiss wrote: > > > > > java.lang.NoSuchMethodError: > > > cern.colt.Sorting.parallelQuickSort([IIILcern/colt/function/tint/IntComparator;)V > > > at cern.colt.matrix.tfloat.algo.FloatSorting.runSort(Unknown Source) > > > at cern.colt.matrix.tfloat.algo.FloatSorting.sortIndex(Unknown Source) > > > at ... [more stuff that I will send if needed] > > > > > > This type of error was discussed in the past, most recently (which I > > > found): > > > https://list.nih.gov/cgi-bin/wa.exe?A2=ind1105&L=IMAGEJ&P=R35667&1=IMAGEJ&9=A&J=on&d=No+Match%3BMatch%3BMatches&z=4 > > > > > > The problem then was outdated parallelcolt in the load path. So I > > > purged my system of all of the old parallelcolt jars, and made sure > > > I have only parallelcolt-0.9.4, which I believe is the latest. > > > > The problem is that parallelcolt is developed in a slightly > > backwards-incompatible manner. That, combined with the fact that > > parallel iterative convolution dependended on a different (and > > incompatible) version of parallelcolt than superresolution prevented > > the inclusion of those otherwise very interesting plugins into Fiji. > > > > In your case, it might also be one of those creative .jar files that > > bundle other projects which leads to all kinds of unpleasant > > surprises. > > > > To find out what .jar file contains the offending Sorting class, use > > Fiji's 'Find Jar For Class' script via the command launcher and > > provide the full class name: cern.colt.Sorting > > > > I found the class in colocalization-pipeline and in colt-1.2.0.jar > > I uninstalled colocalization-pipeline and disabled (for now) > colt-1.2.0.jar (I renamed it to colt-1.2.0.jar-dist). > > This allows parallel iterative deconvolution to run, but I do not think > that it is a good long term solution, because the updater "wants" to > restore colt, and I prefer to keep the standard distribution of > automatically updated files. I agree, but I can only repeat my suggestion to Piotr to make sure that parallelcolt stays backwards-compatible and if that is not possible, at least to make all of the plugins depending on parallelcolt compatible with the newest version of the latter. > Also, I dont know what (if anything) will break by disabling > colt-1.2.0.jar. Theoretically, colt should be completely superseded by parallelcolt. But as I said, parallelcolt is not completely backwards-compatible to itself, so I imagine that it might even have broken backwards-compatibility to colt, too. Piotr is really the best person to ask: Piotr, any insights? Ciao, Johannes -- ImageJ mailing list: http://imagej.nih.gov/ij/list.html |
Hi Johannes and Aryeh,
On Tue, Sep 10, 2013 at 8:38 PM, Johannes Schindelin <[hidden email]> wrote: > Hi Aryeh, > > On Sat, 7 Sep 2013, Aryeh Weiss wrote: > >> On 9/4/13 9:17 PM, Johannes Schindelin wrote: >> > >> > On Sun, 1 Sep 2013, Aryeh Weiss wrote: >> > >> > > java.lang.NoSuchMethodError: >> > > cern.colt.Sorting.parallelQuickSort([IIILcern/colt/function/tint/IntComparator;)V >> > > at cern.colt.matrix.tfloat.algo.FloatSorting.runSort(Unknown Source) >> > > at cern.colt.matrix.tfloat.algo.FloatSorting.sortIndex(Unknown Source) >> > > at ... [more stuff that I will send if needed] >> > > >> > > This type of error was discussed in the past, most recently (which I >> > > found): >> > > https://list.nih.gov/cgi-bin/wa.exe?A2=ind1105&L=IMAGEJ&P=R35667&1=IMAGEJ&9=A&J=on&d=No+Match%3BMatch%3BMatches&z=4 >> > > >> > > The problem then was outdated parallelcolt in the load path. So I >> > > purged my system of all of the old parallelcolt jars, and made sure >> > > I have only parallelcolt-0.9.4, which I believe is the latest. >> > >> > The problem is that parallelcolt is developed in a slightly >> > backwards-incompatible manner. That, combined with the fact that >> > parallel iterative convolution dependended on a different (and >> > incompatible) version of parallelcolt than superresolution prevented >> > the inclusion of those otherwise very interesting plugins into Fiji. >> > >> > In your case, it might also be one of those creative .jar files that >> > bundle other projects which leads to all kinds of unpleasant >> > surprises. >> > >> > To find out what .jar file contains the offending Sorting class, use >> > Fiji's 'Find Jar For Class' script via the command launcher and >> > provide the full class name: cern.colt.Sorting >> > >> >> I found the class in colocalization-pipeline and in colt-1.2.0.jar >> >> I uninstalled colocalization-pipeline and disabled (for now) >> colt-1.2.0.jar (I renamed it to colt-1.2.0.jar-dist). >> >> This allows parallel iterative deconvolution to run, but I do not think >> that it is a good long term solution, because the updater "wants" to >> restore colt, and I prefer to keep the standard distribution of >> automatically updated files. > > I agree, but I can only repeat my suggestion to Piotr to make sure that > parallelcolt stays backwards-compatible and if that is not possible, at > least to make all of the plugins depending on parallelcolt compatible with > the newest version of the latter. > I will update all my plugins to use Parallel Colt 0.9.4 in the next few weeks. >> Also, I dont know what (if anything) will break by disabling >> colt-1.2.0.jar. > > Theoretically, colt should be completely superseded by parallelcolt. But > as I said, parallelcolt is not completely backwards-compatible to itself, > so I imagine that it might even have broken backwards-compatibility to > colt, too. Piotr is really the best person to ask: Piotr, any insights? > Parallel Colt is not backward-compatible with Colt 1.2.0 and it is not being developed anymore. I sent a message about that in October 2009: http://imagej.1557.x6.nabble.com/Advancement-of-Parallel-Colt-td3690926.html Piotr -- ImageJ mailing list: http://imagej.nih.gov/ij/list.html |
All my plugins have been updated to use Parallel Colt 0.9.4 and are available at
https://sites.google.com/site/piotrwendykier/software Piotr On Wed, Sep 11, 2013 at 9:59 AM, Piotr Wendykier <[hidden email]> wrote: > Hi Johannes and Aryeh, > > On Tue, Sep 10, 2013 at 8:38 PM, Johannes Schindelin > <[hidden email]> wrote: >> Hi Aryeh, >> >> On Sat, 7 Sep 2013, Aryeh Weiss wrote: >> >>> On 9/4/13 9:17 PM, Johannes Schindelin wrote: >>> > >>> > On Sun, 1 Sep 2013, Aryeh Weiss wrote: >>> > >>> > > java.lang.NoSuchMethodError: >>> > > cern.colt.Sorting.parallelQuickSort([IIILcern/colt/function/tint/IntComparator;)V >>> > > at cern.colt.matrix.tfloat.algo.FloatSorting.runSort(Unknown Source) >>> > > at cern.colt.matrix.tfloat.algo.FloatSorting.sortIndex(Unknown Source) >>> > > at ... [more stuff that I will send if needed] >>> > > >>> > > This type of error was discussed in the past, most recently (which I >>> > > found): >>> > > https://list.nih.gov/cgi-bin/wa.exe?A2=ind1105&L=IMAGEJ&P=R35667&1=IMAGEJ&9=A&J=on&d=No+Match%3BMatch%3BMatches&z=4 >>> > > >>> > > The problem then was outdated parallelcolt in the load path. So I >>> > > purged my system of all of the old parallelcolt jars, and made sure >>> > > I have only parallelcolt-0.9.4, which I believe is the latest. >>> > >>> > The problem is that parallelcolt is developed in a slightly >>> > backwards-incompatible manner. That, combined with the fact that >>> > parallel iterative convolution dependended on a different (and >>> > incompatible) version of parallelcolt than superresolution prevented >>> > the inclusion of those otherwise very interesting plugins into Fiji. >>> > >>> > In your case, it might also be one of those creative .jar files that >>> > bundle other projects which leads to all kinds of unpleasant >>> > surprises. >>> > >>> > To find out what .jar file contains the offending Sorting class, use >>> > Fiji's 'Find Jar For Class' script via the command launcher and >>> > provide the full class name: cern.colt.Sorting >>> > >>> >>> I found the class in colocalization-pipeline and in colt-1.2.0.jar >>> >>> I uninstalled colocalization-pipeline and disabled (for now) >>> colt-1.2.0.jar (I renamed it to colt-1.2.0.jar-dist). >>> >>> This allows parallel iterative deconvolution to run, but I do not think >>> that it is a good long term solution, because the updater "wants" to >>> restore colt, and I prefer to keep the standard distribution of >>> automatically updated files. >> >> I agree, but I can only repeat my suggestion to Piotr to make sure that >> parallelcolt stays backwards-compatible and if that is not possible, at >> least to make all of the plugins depending on parallelcolt compatible with >> the newest version of the latter. >> > > I will update all my plugins to use Parallel Colt 0.9.4 in the next few weeks. > > >>> Also, I dont know what (if anything) will break by disabling >>> colt-1.2.0.jar. >> >> Theoretically, colt should be completely superseded by parallelcolt. But >> as I said, parallelcolt is not completely backwards-compatible to itself, >> so I imagine that it might even have broken backwards-compatibility to >> colt, too. Piotr is really the best person to ask: Piotr, any insights? >> > > Parallel Colt is not backward-compatible with Colt 1.2.0 and it is not > being developed anymore. > I sent a message about that in October 2009: > > http://imagej.1557.x6.nabble.com/Advancement-of-Parallel-Colt-td3690926.html > > Piotr -- ImageJ mailing list: http://imagej.nih.gov/ij/list.html |
Hi Piotr,
On Thu, 19 Sep 2013, Piotr Wendykier wrote: > All my plugins have been updated to use Parallel Colt 0.9.4 and are > available at > > https://sites.google.com/site/piotrwendykier/software Awesome news! Feel free to upload them to a personal update site... Ciao, Johannes -- ImageJ mailing list: http://imagej.nih.gov/ij/list.html |
Hi all, I thought I would post this in reply to a similar error.
I am running ParallelITerativeDeconvolution (v1.12) in FIJI on various machines, and they are all giving similar error messages. On a windows and Debian machine, the errors halt the processing - I have yet to look into them in detail, but I suspect they are the same problem as listed here, and I will try to remove any extra copies of parallel colt. However, on my mac (FIJI running ij-1.50b, java 1.8.0_60 64bit) I get the following Exception: java.util.concurrent.ExecutionException: java.lang.ArrayIndexOutOfBoundsException: 50000000 at java.util.concurrent.FutureTask.report(FutureTask.java:122) at java.util.concurrent.FutureTask.get(FutureTask.java:192) at edu.emory.mathcs.utils.ConcurrencyUtils.waitForCompletion(Unknown Source) at edu.emory.mathcs.restoretools.iterative.wpl.WPLFloatIterativeDeconvolver3D.convolveFD(Unknown Source) at edu.emory.mathcs.restoretools.iterative.wpl.WPLFloatIterativeDeconvolver3D.deconvolve(Unknown Source) at edu.emory.mathcs.restoretools.iterative.ParallelIterativeDeconvolution3D$MainPanel$DeconvolveButtonActionListener$1.run(Unknown Source) at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.ArrayIndexOutOfBoundsException: 50000000 at edu.emory.mathcs.restoretools.iterative.wpl.WPLFloatIterativeDeconvolver3D$1.run(Unknown Source) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) It it thrown with the initiation of WPL and with each iteration. It occurs with any size of image. Interestingly, the algorithm still manages to run. It disappears when I run it on a "bare-bones" version of ImageJ - so there must be a clash with some class in FIJI. It is still present if I use java 1.6 with FIJI. I cannot find any extra jars of either "colt" or "parallel colt" in my build of FIJI.. It looks like an error associated with the ConcurrencyUtils class in ParallelIterativeDeconvolution - any ideas what is causing the problem? Cheers, SJ. |
Dear all, I have now assessed on my Debian Machine, and the following error comes up:
java.lang.NoSuchMethodError: edu.emory.mathcs.utils.ConcurrencyUtils.submit(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/Future; at cern.colt.matrix.tfloat.impl.DenseFloatMatrix3D.zSum(Unknown Source) at edu.emory.mathcs.restoretools.iterative.wpl.WPLFloatIterativeDeconvolver3D.<init>(Unknown Source) at edu.emory.mathcs.restoretools.iterative.ParallelIterativeDeconvolution3D$MainPanel$DeconvolveButtonActionListener$1.run(Unknown Source) at java.lang.Thread.run(Thread.java:745) I have found transforms.jar to be in both the jar and the PID folders. If I remove either of them the error remains. It seems to be along the same lines as the previous problem on the Mac. If anyone has any ideas as to what might be causing the error with the ConcurrencyUtil class please do let me know. In the meantime I will continue to figure out what the problem is.... SJ. |
Hi Steve,
> If anyone has any ideas as to what might be causing the error with the > ConcurrencyUtil class please do let me know. In the meantime I will > continue to figure out what the problem is.... Unfortunately, I do not have time to help troubleshoot the workings of the Parallel Iterative Deconvolution plugin with Fiji. However, I am curious whether you have looked at the Richardson Lucy TV deconvolution algorithm present in the ImageJ Ops project (http://imagej.net/Ops): https://github.com/imagej/imagej-ops/tree/imagej-ops-0. 33.0/src/main/java/net/imagej/ops/deconvolve The primary author, Brian Northan, gave a talk about it at the last ImageJ conference, which you can watch here: https://vimeo.com/140098821 And slides at: https://imagej.github.io/presentations/2015-09-04-imagej2-deconvolution/#/ This code will improve and continue to be maintained. I invite you to join the ImageJ Forum (http://forum.imagej.net/) for discussion, questions, problem solving, future planning, etc., relating to deconvolution in ImageJ. Regards, Curtis -- Curtis Rueden LOCI software architect - http://loci.wisc.edu/software ImageJ2 lead, Fiji maintainer - http://imagej.net/User:Rueden Did you know ImageJ has a forum? http://forum.imagej.net/ On Thu, Oct 20, 2016 at 6:57 AM, SteveWest <[hidden email]> wrote: > Dear all, I have now assessed on my Debian Machine, and the following error > comes up: > > java.lang.NoSuchMethodError: > edu.emory.mathcs.utils.ConcurrencyUtils.submit(Ljava/util/co > ncurrent/Callable;)Ljava/util/concurrent/Future; > at cern.colt.matrix.tfloat.impl.DenseFloatMatrix3D.zSum(Unknown > Source) > at > edu.emory.mathcs.restoretools.iterative.wpl.WPLFloatIterativ > eDeconvolver3D.<init>(Unknown > Source) > at > edu.emory.mathcs.restoretools.iterative.ParallelIterativeDec > onvolution3D$MainPanel$DeconvolveButtonActionListener$1.run(Unknown > Source) > at java.lang.Thread.run(Thread.java:745) > > I have found transforms.jar to be in both the jar and the PID folders. If > I > remove either of them the error remains. It seems to be along the same > lines as the previous problem on the Mac. > > If anyone has any ideas as to what might be causing the error with the > ConcurrencyUtil class please do let me know. In the meantime I will > continue to figure out what the problem is.... > > SJ. > > > > -- > View this message in context: http://imagej.1557.x6.nabble.c > om/parallel-iterative-deconvolution-tp5004620p5017430.html > Sent from the ImageJ mailing list archive at Nabble.com. > > -- > ImageJ mailing list: http://imagej.nih.gov/ij/list.html > -- ImageJ mailing list: http://imagej.nih.gov/ij/list.html |
I'm happy to answer any questions regarding deconvolution. As Curtis
mentioned the ImageJ forum is probably the best place to post questions, mainly because it is easier to post links, images, etc. If you are able to post images and psf I can try processing them. On Thu, Oct 20, 2016 at 10:45 AM, Curtis Rueden <[hidden email]> wrote: > Hi Steve, > > > If anyone has any ideas as to what might be causing the error with the > > ConcurrencyUtil class please do let me know. In the meantime I will > > continue to figure out what the problem is.... > > Unfortunately, I do not have time to help troubleshoot the workings of the > Parallel Iterative Deconvolution plugin with Fiji. However, I am curious > whether you have looked at the Richardson Lucy TV deconvolution algorithm > present in the ImageJ Ops project (http://imagej.net/Ops): > > https://github.com/imagej/imagej-ops/tree/imagej-ops-0. > 33.0/src/main/java/net/imagej/ops/deconvolve > > The primary author, Brian Northan, gave a talk about it at the last ImageJ > conference, which you can watch here: > https://vimeo.com/140098821 > > And slides at: > https://imagej.github.io/presentations/2015-09-04- > imagej2-deconvolution/#/ > > This code will improve and continue to be maintained. > > I invite you to join the ImageJ Forum (http://forum.imagej.net/) for > discussion, questions, problem solving, future planning, etc., relating to > deconvolution in ImageJ. > > Regards, > Curtis > > -- > Curtis Rueden > LOCI software architect - http://loci.wisc.edu/software > ImageJ2 lead, Fiji maintainer - http://imagej.net/User:Rueden > Did you know ImageJ has a forum? http://forum.imagej.net/ > > > On Thu, Oct 20, 2016 at 6:57 AM, SteveWest <[hidden email]> > wrote: > > > Dear all, I have now assessed on my Debian Machine, and the following > error > > comes up: > > > > java.lang.NoSuchMethodError: > > edu.emory.mathcs.utils.ConcurrencyUtils.submit(Ljava/util/co > > ncurrent/Callable;)Ljava/util/concurrent/Future; > > at cern.colt.matrix.tfloat.impl.DenseFloatMatrix3D.zSum(Unknown > > Source) > > at > > edu.emory.mathcs.restoretools.iterative.wpl.WPLFloatIterativ > > eDeconvolver3D.<init>(Unknown > > Source) > > at > > edu.emory.mathcs.restoretools.iterative.ParallelIterativeDec > > onvolution3D$MainPanel$DeconvolveButtonActionListener$1.run(Unknown > > Source) > > at java.lang.Thread.run(Thread.java:745) > > > > I have found transforms.jar to be in both the jar and the PID folders. > If > > I > > remove either of them the error remains. It seems to be along the same > > lines as the previous problem on the Mac. > > > > If anyone has any ideas as to what might be causing the error with the > > ConcurrencyUtil class please do let me know. In the meantime I will > > continue to figure out what the problem is.... > > > > SJ. > > > > > > > > -- > > View this message in context: http://imagej.1557.x6.nabble.c > > om/parallel-iterative-deconvolution-tp5004620p5017430.html > > Sent from the ImageJ mailing list archive at Nabble.com. > > > > -- > > ImageJ mailing list: http://imagej.nih.gov/ij/list.html > > > > -- > ImageJ mailing list: http://imagej.nih.gov/ij/list.html > -- ImageJ mailing list: http://imagej.nih.gov/ij/list.html |
Hi Curtis & Brian,
Thanks for your replies - I have not tried that Lucy Richardson algorithm - although I have previously tried that type of algorithm before, and have always found WPL in ParallelIterativeDeconvolution to give the best results for my images (which are 3D image stacks from confocal microscopy). I would be happy to try out this algorithm - I have checked out the GitHub page. Is there any implementation of it in ImageJ for me to try out? Or has it not been released yet? I will check out the ImageJ Forum too - thanks for the tip! All the best, Steve.
|
Free forum by Nabble | Edit this page |