I am getting "java.lang.ClassNotFoundException: com.google.gson.Gson" error even though it is defined in my classpath

126,136

Solution 1

In case of a JSP/Servlet webapplication, you just need to drop 3rd party JAR files in /WEB-INF/lib folder. If the project is a Dynamic Web Project, then Eclipse will automatically take care about setting the buildpath right as well. You do not need to fiddle with Eclipse buildpath. Don't forget to undo it all.

Solution 2

I faced same problem and tried above solutions but none of them worked for me. Then I tried following steps and the problem was solved:

  • Go to the project properties.
  • Go to Java Build Path option.
  • Then add *.jar file as external jar.
  • Then go to the order and export option and select the libraries and jars of the project.
  • save the current changes and clean the project and run the project again.

Solution 3

Click on Deployment Assembly ( right above Java Build Path that you show as active ) and make sure that you see json-lib-2.4-jdk15.jar there.

Usually, you should add it to your build path and export it from your project. Once it's exported you will see the WTP warning that it's not a part of the deployment. Choose the Quick Fix option and add it to your deployment path.

Solution 4

I was just having the same issue...

To resolve the problem (at least in my case) ensure you have included the lib folder in your bundle classpath:

Manifest-Version: 1.0
... 
Bundle-ClassPath: lib/gson-1.6.jar,
 .
...

Or if you want to include all jar's in the folder:

Bundle-ClassPath: lib/

You will still need to place the jar files on the java build path as shown above. Then your imported jar's should appear in the folder "Referenced Libraries"

Solution 5

Well for me the problem got resolved by adding the jars in my APACHE/TOMCAT/lib folder ! .

Share:
126,136
Fry
Author by

Fry

What's the universal code of time travel doing on Fry's butt? Well, it had to be somewhere

Updated on August 14, 2021

Comments

  • Fry
    Fry over 2 years

    I'm trying to parse some JSON object strings that I'm getting using gson-1.6.jar I have placed it in the same location as my other .jars and have added it to my buildpath in eclipse.

    The other libraries worked fine when I added them and I can use them without any issues, but when I try to create the JSON object, I get the titular error. I've looked through the other questions with this error, but I couldn't find a solution that didn't involve something that I've tried or something unrelated.

    I import it near the top using:

    import com.google.gson.Gson;
    

    Then use it later in a static function like so:

    Gson g = new Gson();
    

    Here is my eclipse generated classpath file [Path] substituted for actual path:

    <?xml version="1.0" encoding="UTF-8"?>
    <classpath>
        <classpathentry kind="src" path="src"/>
        <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jre6">
            <attributes>
                <attribute name="owner.project.facets" value="java"/>
            </attributes>
        </classpathentry>
        <classpathentry kind="con" path="org.eclipse.jst.server.core.container/org.eclipse.jst.server.tomcat.runtimeTarget/Apache Tomcat v5.5">
            <attributes>
                <attribute name="owner.project.facets" value="jst.web"/>
            </attributes>
        </classpathentry>
        <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/>
        <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
        <classpathentry kind="lib" path="[Path]/jabbabase-ws-jwsdp-client-2.4.7.jar"/>
        <classpathentry kind="lib" path="[Path]/log4j-1.2.16.jar"/>
        <classpathentry kind="lib" path="[Path]/gson-1.6.jar"/>
        <classpathentry kind="output" path="build/classes"/>
    </classpath>
    

    as well as my build path window: Build Path Screen

    I'm a little lost at this point. I've tried Google and the posts basically just say to add to your build path. Anybody have any ideas?

    Edit: More Info

    The code referencing com.google.gson.GSON is used as a bean by a jsp. This function is called from the jsp and the error occurs as soon as the function is executed. The first line in the function is:

    Gson g = new Gson();
    

    It seems to compile and deploy fine, but when it is executed, I get the error message.

    Thanks

  • Fry
    Fry about 13 years
    I actually have the file there as well, but still no luck. Would it cause a conflict if I referenced my external one and had one in the /WEB-INF/lib folder?
  • BalusC
    BalusC about 13 years
    To recap, you did drop gson-1.6.jar in /WEB-INF/lib? The json-lib-2.4-jdk15.jar is not Gson.
  • BalusC
    BalusC about 13 years
    Note that this section is only useful for external projects or libraries which are not dropped in /WEB-INF/lib.
  • Fry
    Fry about 13 years
    Correct, I edited my post to correct that I am using Gson, not json-lib. And yes, the Gson-1.6.jar exists in my /WEB-INF/lib as well as me workspace lib folder where I am referencing it from in the Build path
  • BalusC
    BalusC about 13 years
    OK and when did you get this exception? During running some class with main() method as application inside the project? Or when running some JSP/Servlet code? I.e. what code exactly is using Gson and how exactly is it been executed? Note that a duplicate reference in build path is unnecessary. That lib should only exist in Web App Libraries which is auto-managed by Eclipse. Remove any manual references.
  • Fry
    Fry about 13 years
    Ok, updated post at the bottom with a little more info. Ok, if I just have it in the webapps/lib folder, I can reference it from there, but I just tried it without the build path reference and got compilation errors that the import could not be resolved
  • Fry
    Fry about 13 years
    Ok, I think I know what happened, it's weird and probably a bug, but it seems when I put the jar in my /WEB-INF/lib folder, the project in eclipse didn't update even when I restarted eclipse. After I right-click-updated the project, the library showed up and it compiles now - You are correct that the manual reference is not needed. Thanks for your help an patience.
  • Kingsolmn
    Kingsolmn over 11 years
    Thanks for sharing, this method also worked for an Android project of mine as well!
  • Sancao
    Sancao almost 11 years
    That makes the jar part of the classpath for every webapp you run in Tomcat.
  • Todd Painton
    Todd Painton almost 11 years
    Thank you so much.. As well, fixed the exact same error I suddenly started getting in my android project after a windows update.. 6 hours wasted until I read this... so pissed and tired.
  • Koderok
    Koderok over 9 years
    Thanks, I was getting this error in an Android project. Your solution fixed it.
  • kiwicomb123
    kiwicomb123 over 7 years
    Thanks dude, this was a problem I kept running into often.
  • nick
    nick about 6 years
    @BalusC why Gson imported though Maven does not work (scope :-compile / provided both) but it worked if manually kept GSON in web-INF/lib folder?? any idea?
  • BalusC
    BalusC about 6 years
    @nick: because you need it during runtime when it's not provided by the target runtime.
  • Chandrani H
    Chandrani H over 4 years
    Thank you so much. This worked for me working on an Eclipse Jetty project.