java.lang.NoClassDefFoundError when trying to instantiate class from jar
Question: I did found quite a lot about this error, but somehow none of the suggested
solutions resolved the problem.

I am trying to use JNA bindings for libgphoto2 under Ubuntu in Eclipse
(moderate experience with Java on Eclipse, none whatsoever on Ubuntu, I'm
afraid). The bindings in question I want to use are here:
<http://angryelectron.com/projects/libgphoto2-jna/>

I followed the steps described on that page, and made a simple test client
that failed with the above error. So I reduced the test client until the only
thing I tried to do was to instantiate a GPhoto2 object, which still produced
the error. The test client looks like this:

    
    
    import com.angryelectron.gphoto2.*;
    
    public class test_class 
    {
        public static void main(String[] args)
        {
            GPhoto2 cam = new GPhoto2();
        }
    
    }
    

The errors I get take up considerably more space:

    
    
    Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/jna/Structure
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        at test_class.main(test_class.java:12)
    Caused by: java.lang.ClassNotFoundException: com.sun.jna.Structure
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        ... 13 more
    

libgphoto2 itself is installed, it runs from the command line, I even have the
development headers and am able to call GPhoto2 functions from python, so the
problem can't be located there.

When looking at the .class files in Eclipse, however, they didn't have any
definitions. So I figured that might be the problem, especially since there
was an error when building the whole thing with ant (although the .jar was
succesfully exported, from what I could make out the error concerned only the
generation of documentation). So I loaded the source into eclipse and built
the .jar myself. At this occasion Eclipse stated there were warnings during
the build (though no errors), but didn't show me the actual warnings. If
anyone could tell me where the hell the build log went, that might already
help something. I searched for it everywhere without success, and if I click
on "details" in eclipse it merely tells me where the warnings occured, not
what they were.

Be that as it may, a warning isn't necessarily devastating, so I imported the
resulting Jar into the above client. I checked the .class files, this time
they contained all the code. But I still get the exact same list of errors
(yes, I have made very sure that the old library was removed from the
classpath and the new ones added. I repeated the process several times, just
in case).

Since I don't have experience with building jars, I made a small helloworld
jar, just to see if I could call that from another program or if I'd be
getting similar errors. It worked without a hitch. I even tried to reproduce
the problem deliberately by exporting it with various options, but it still
worked. I tried re-exporting the library I actully need with the settings that
had worked during my experiment, but they still wouldn't run. I'm pretty much
stuck by now. Any hints that help me resolve the problem would be greatly
appreciated.


Answer: In addition to what @Paul Whelan has said. You might have better luck by just
get the missing jar directly.

Get the missing library [here](https://github.com/java-native-access/jna), set
the classpath and then re-run the application again and see whether it will
run fine or not.

