I've created a Maven Project (eng_comparison) in Eclipse IDE, with jersey-quickstart-webapp archetype.
EngComparator.java
package com.zoo.web.eng.eng_comparison; import java.io.FileNotFoundException; import java.io.IOException; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import com.adv.zoo.web.model.auto.EngProvider; import com.adv.zoo.web.model.auto.EngProviderImpl; @Path("compare") public class EngComparator { public static String data = "safe"; @GET @Produces(MediaType.TEXT_PLAIN) public String fetchContent() throws FileNotFoundException, IOException, Throwable { EngProvider engProvider = new EngProviderImpl(); String content = engProvider.getEng(data); return content; } }
where EngProvider(interface) and EngProviderImpl(Class) are included in the project as a jar file.
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>Jersey Web Application</servlet-name> <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> <init-param> <param-name>jersey.config.server.provider.packages</param-name> <param-value>com.zoo.web.eng.eng_comparison</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>Jersey Web Application</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> </web-app>
While running this project on tomcat server (9.0), I'm the getting the following error.
NoClassDefFoundError : com/adv/zoo/web/model/auto/EngProvider
ClassNotFoundException : com.adv.zoo.web.model.auto.EngProvider
NOTE : I've added the EngProvider interface and EngProviderImpl class as a jar in the build path of the project, but still it's showing this error. I'm trying to call a method which is in the JAR file (added to build path)
But when I run the project as a java application, it is working fine.
My Project Structure :