Java 如何从jersey web项目调用jar文件中的方法?
我已经在EclipseIDE中创建了一个Maven项目(eng_comparison),使用jersey quickstart webapp原型 EngComparator.java 其中,EngProvider(接口)和EngProviderImpl(类)作为jar文件包含在项目中 web.xmlJava 如何从jersey web项目调用jar文件中的方法?,java,maven,jar,jersey-2.0,web.xml,Java,Maven,Jar,Jersey 2.0,Web.xml,我已经在EclipseIDE中创建了一个Maven项目(eng_comparison),使用jersey quickstart webapp原型 EngComparator.java 其中,EngProvider(接口)和EngProviderImpl(类)作为jar文件包含在项目中 web.xml index.jsp Jersey Web应用程序 org.glassfish.jersey.servlet.ServletContainer jersey.config.server.provid
index.jsp
Jersey Web应用程序
org.glassfish.jersey.servlet.ServletContainer
jersey.config.server.provider.packages
com.zoo.web.eng.eng\u比较
Jersey Web应用程序
/*
在tomcat服务器(9.0)上运行此项目时,我发现以下错误
NoClassDefFoundError:com/adv/zoo/web/model/auto/EngProvider
ClassNotFoundException:com.adv.zoo.web.model.auto.EngProvider
注意:我已经在项目的构建路径中添加了EngProvider接口和EngProviderImpl类作为jar,但它仍然显示了这个错误。我试图调用JAR文件中的一个方法(添加到构建路径中)
但是,当我将项目作为java应用程序运行时,它运行良好。
我的项目结构:
在创建战争时,您的jar是否会在WEB-INF/lib中结束?@ThorbjørnRavnAndersen不,在创建战争时,我的jar文件没有进入WEB-INF/lib文件夹,这可以解释为什么类文件不在那里,就像异常情况所说的那样。@ThorbjørnRavnAndersen非常感谢。我已经将JAR包含在WEB-INF/lib中,现在它可以为我工作了。
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;
}
}
<?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>