NoSuchMethodError on Windows but not Ubuntu

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

NoSuchMethodError on Windows but not Ubuntu

Chris Pudney
G'day,

I've written a filter plug-in that makes use of Drew Noakes' metadata-extractor to read EXIF data.
https://code.google.com/p/metadata-extractor/

To install the plug-in in ImageJ I copy my filter's JAR plus the two JARs (metadata-extractor-2.6.4.jar & xmpcore.jar) required by metadata-extractor to the ImageJ plugins directory.

This works fine on my Ubuntu workstation (Ubuntu 12.04 64-bit, ImageJ 1.47m, JRE6u35). However, when I copy the same three JARs to ImageJ's plugins folder on my Windows PC (Vista 32-bit, ImageJ 1.47m, JRE6u35) the filter raises an exception:

java.lang.NoSuchMethodError: com.drew.metadata.Metadata.getDirectories()Ljava/lang/Iterable;

This means that the JRE is unable to find the com.drew.metadata.Metadata.getDirectories() in its classpath.

Can anyone shed light on what the problem might be?

Thanks,
Chris.
 

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html
Reply | Threaded
Open this post in threaded view
|

Re: NoSuchMethodError on Windows but not Ubuntu

dscho
Hi Chris,

On Mon, 25 Mar 2013, Chris Pudney wrote:

> I've written a filter plug-in that makes use of Drew Noakes'
> metadata-extractor to read EXIF data.
> https://code.google.com/p/metadata-extractor/
>
> To install the plug-in in ImageJ I copy my filter's JAR plus the two
> JARs (metadata-extractor-2.6.4.jar & xmpcore.jar) required by
> metadata-extractor to the ImageJ plugins directory.
>
> This works fine on my Ubuntu workstation (Ubuntu 12.04 64-bit, ImageJ
> 1.47m, JRE6u35). However, when I copy the same three JARs to ImageJ's
> plugins folder on my Windows PC (Vista 32-bit, ImageJ 1.47m, JRE6u35)
> the filter raises an exception:
>
> java.lang.NoSuchMethodError: com.drew.metadata.Metadata.getDirectories()Ljava/lang/Iterable;
>
> This means that the JRE is unable to find the
> com.drew.metadata.Metadata.getDirectories() in its classpath.

Not quite. It means that a com.drew.metadata.Metadata class was found that
does not have the method "public Iterable getDirectories()".

If you use Fiji, you can use the "Find Jar For Class" plugin. Otherwise,
this Javascript snippet will shed light into it:

        importClass(Packages.ij.IJ);
        IJ.log("URL: " + IJ.getClassLoader()
                .loadClass("com.drew.metadata.Metadata")
                .getResource("/com/drew/metadata/Metadata.class"));

The output should be pretty self-explanatory.

Ciao,
Johannes

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html