2011-02-10 12 views
25

Estoy tratando de analizar algunas cadenas de objetos JSON que obtengo usando gson-1.6. jar Lo he colocado en la misma ubicación que mis otros .jars y lo he agregado a mi buildpath en eclipse.Obtengo el error "java.lang.ClassNotFoundException: com.google.gson.Gson" aunque está definido en mi classpath

Las otras bibliotecas funcionaron bien cuando las agregué y puedo usarlas sin problemas, pero cuando intento crear el objeto JSON, aparece el error de titular. Revisé las otras preguntas con este error, pero no pude encontrar una solución que no implicara algo que haya intentado o algo que no esté relacionado.

que importar cerca de la parte superior usando:

import com.google.gson.Gson; 

luego usarlo posteriormente en una función estática de este modo:

Gson g = new Gson(); 

Aquí es mi Eclipse genera archivo de ruta de clases [Ruta] sustituido por real ruta:

<?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í como la ventana de mi trayectoria de la estructura: Build Path Screen

Estoy un poco perdido en este momento. He intentado con Google y básicamente las publicaciones dicen agregar a tu ruta de compilación. ¿Alguien tiene ideas?

Edición: Más información

El código de referencia com.google.gson.GSON se utiliza como un grano por un JSP. Esta función se llama desde jsp y el error ocurre tan pronto como se ejecuta la función. La primera línea de la función es:

Gson g = new Gson(); 

Parece compilar y desplegar bien, pero cuando se ejecuta, me sale el mensaje de error.

Gracias

+0

¿Cómo está ejecutando su código? – Nick

+0

A través del IDE de Eclipse, como JSP con el archivo Java que se utiliza como un grano – Fry

Respuesta

53

En caso de una aplicación web JSP/Servlet, sólo tiene que soltar los archivos JAR 3 ª parte en /WEB-INF/lib carpeta. Si el proyecto es Dynamic Web Project, Eclipse se encargará automáticamente de configurar la ruta de compilación también. Hace no necesidad de violín con Eclipse buildpath. No olvides deshacer todo.

+2

que en realidad tienen el archivo allí también, pero aún ninguna suerte. ¿Causaría un conflicto si hiciera referencia a mi externo y tuviera uno en la carpeta/WEB-INF/lib? – Fry

+0

Para recapitular, ¿dejó caer 'gson-1.6.jar' en'/WEB-INF/lib'? El 'json-lib-2.4-jdk15.jar' no es Gson. – BalusC

+0

Correcto, edité mi publicación para corregir que estoy usando Gson, no json-lib. Y sí, el Gson-1.6.jar existe en mi/WEB-INF/lib así como también en mi carpeta de espacio de trabajo donde estoy haciendo referencia desde la ruta de compilación – Fry

5

Haga clic en Deployment Assembly (justo encima de Java Build Path que mostrará activa) y asegúrese de que se ve JSON-lib-2,4-jdk15.jar allí.

Normalmente, debe agregarlo a su ruta de compilación y exportarlo desde su proyecto. Una vez que se haya exportado, verá la advertencia de WTP de que no forma parte de la implementación. Elija la opción Quick Fix y agréguela a su ruta de implementación.

+1

Tenga en cuenta que esta sección solo es útil para proyectos externos o bibliotecas que no se eliminan en '/ WEB-INF/lib'. – BalusC

+0

También funciona para bibliotecas en/WEB-INF/lib. –

19

Me enfrenté al mismo problema e intenté las soluciones anteriores, pero ninguna de ellas funcionó para mí. Luego traté de seguir los pasos y el problema fue resuelto:

  • Ir a las propiedades del proyecto.
  • Ir a la opción Java Build Path.
  • A continuación, agregue el archivo *.jar como jar externo.
  • Luego vaya a la opción de orden y exportación y seleccione las bibliotecas y jarras del proyecto.
  • guarde los cambios actuales y limpie el proyecto y vuelva a ejecutar el proyecto.
+1

Gracias por compartir, este método también funcionó para un proyecto mío de Android. – Kingsolmn

+0

Muchas gracias .. Además, corrigió exactamente el mismo error que de repente comencé a tener en mi proyecto de Android después de una actualización de Windows. 6 horas perdidas hasta que leí esto ... tan cabreado y cansado. –

+0

Gracias, estaba obteniendo este error en un proyecto de Android. Tu solución lo solucionó – Koderok

3

Estaba teniendo el mismo problema ...

Para resolver el problema (al menos en mi caso) asegurarse de que han incluido la carpeta de la liberación en su paquete de ruta de clases:

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

o si desea incluir todos los del tarro en la carpeta:

Bundle-ClassPath: lib/ 

usted todavía tendrá que colocar los archivos jar en el camino de construcción java como se muestra arriba. A continuación, debería aparecer de su frasco importada en la carpeta "bibliotecas de referencia"

1

Bueno, para mí el problema se resolvió mediante la adición de los frascos en mi carpeta de Apache/Tomcat/lib! .

+0

Eso hace que el jarro sea parte del classpath para * cada * webapp que ejecuta en Tomcat. – nitind

0

que tenían el mismo problema cuando se desarrolla un KNIME Nodo/plugin en el entorno Eclipse. La solución no era solo agregar el gson.jar como un JAR externo a la ruta de compilación, también se requería ir al plugin.xml, luego la pestaña Dependencias y agregar com.google.gson como un complemento obligatorio.

Cuestiones relacionadas