gpt4 book ai didi

java - 错误 java.lang.NoClassDefFoundError : org/apache/http/client/methods/HttpUriRequest

转载 作者:行者123 更新时间:2023-12-02 10:40:17 27 4
gpt4 key购买 nike

我正在动态 Web 项目中使用 Eclipse Java EE IDE。运行我的 servlet“Controleur2”后,出现此错误:

ERROR HTTP 500
javax.servlet.ServletException: L''exécution de la servlet a lancé une exception
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

cause mère
java.lang.NoClassDefFoundError: org/apache/http/client/methods/HttpUriRequest
servlets.ControleurForm.doPost(ControleurForm.java:44)
javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

cause mère
java.lang.ClassNotFoundException: org.apache.http.client.methods.HttpUriRequest
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
servlets.ControleurForm.doPost(ControleurForm.java:44)
javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

这是我的 servlet:

控制者2

package servlets;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


/**
* Servlet implementation class Controleur2
*/
@WebServlet("/Controleur2")
public class Controleur2 extends HttpServlet {
private static final long serialVersionUID = 1L;

/**
* @see HttpServlet#HttpServlet()
*/
public Controleur2() {
super();

}

/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
request.setAttribute("orga","salut");
this.getServletContext().getRequestDispatcher("/index.jsp").forward(request, response);
}

/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
this.doGet(request, response);
}

}

控制表

    package servlets;

import java.io.IOException;
import java.util.Map;

import org.apache.http.client.methods.HttpUriRequest;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import dataPackage.Data;
import dataPackage.Model;

/**
* Servlet implementation class ControleurForm
*/
@WebServlet("/ControleurForm")
public class ControleurForm extends HttpServlet {
private static final long serialVersionUID = 1L;

/**
* @see HttpServlet#HttpServlet()
*/
public ControleurForm() {
super();
// TODO Auto-generated constructor stub
}
public void init() throws ServletException {
// TODO Auto-generated method stub
super.init();
}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request,response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String orga = request.getParameter("orga"); //lecture des données fournies par l'utilisateur
Data data = new Data("2018-10-04","2018-10-05","ELECTRICITE DE France","0fe13821-9014-4cc5-a5f9-469a5a04b2e9"); //création de l'objet Data en fonction
Map<String, Object> map = data.getData(); //appel de la méthode pour récupérer la réponse
request.setAttribute("datamap",map);
this.getServletContext().getRequestDispatcher("/charts.jsp").forward(request, response);
}

}

这是我的 JSP 文件:

索引

    <?xml version="1.0" encoding="ISO-8859-1" ?>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>StatsAPIViewer</title>
</head>
<body>
<p>Ceci est une page générée depuis une JSP.</p>

<% String attribut = (String) request.getAttribute("orga");
out.println(attribut);%>

<form method="post" action="controleurform">
<p>
<label for="orga">API :</label><br />
<select name="orga" id="orga">
<option value="ELECTRICITE">ELECTRICITE</option>
<option value="ELECTRICITEOA">ELECTRICITEOA</option>
</select>
</p>
<input type="submit" value="Envoyer" />
</form>

</body>
</html>

图表

    <?xml version="1.0" encoding="ISO-8859-1" ?>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>

<%@page import="java.util.*" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Your chart</title>
</head>
<body>
Page de graphes
<p>
<%
String attribut2 = (String) request.getAttribute("data");
out.println( attribut2 );
%></p>
</body>
</html>

这是我的 java 类:

数据类

package dataPackage;

import java.io.IOException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Map;

import org.apache.http.HttpStatus;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;



public class Data {

private String from;
private String to;
private String orga;
private String client;


public Data(String pFrom, String pTo, String pOrga, String pClient) {
from = pFrom;
to = pTo;
orga = pOrga;
client = pClient;
}



public Map<String, Object> getData() throws IOException {

Map<String, Object> mapApp = null;
String organization = URLEncoder.encode(this.orga, "UTF-8");

try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
System.setProperty("jsse.enableSNIExtension", "false");

final String url = "https://vespa-prd-api1-gmg.rte-france.com/api/portal/v1.3/metrics/reports/api/summary/0?from="+ this.from+"T22%3A00%3A00Z&to="+this.to+"T13%3A23%3A58Z&organization="+organization+"&client="+this.client+"&reportsubtype=trafficAll";
final HttpGet get = new HttpGet(url);
get.addHeader("Authorization", "Basic YXBpYWRtaW46Y2hhbmdlbWU=");
//System.out.println("here");
//System.out.println(get);
try (final CloseableHttpResponse response = httpClient.execute(get)) {

if (response.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
System.out.println("Erreur : "+response.getStatusLine().getStatusCode());
}

String jsonResponse = EntityUtils.toString(response.getEntity());

ObjectMapper objectmapper = new ObjectMapper();
ArrayList<Object> jsonList = objectmapper.readValue(jsonResponse,ArrayList.class);
//System.out.println(jsonList);

//JSON PARSER
final GsonBuilder builder = new GsonBuilder();
builder.setPrettyPrinting();
builder.disableHtmlEscaping();
builder.serializeNulls();
builder.setLenient();
final Gson gson = builder.create();

ArrayList<Object> listFailures = new ArrayList<>();
ArrayList<Object> listTime = new ArrayList<>();
ArrayList<Object> listSuccesses = new ArrayList<>();
ArrayList<Object> listExceptions = new ArrayList<>();
ArrayList<Object> listNumMessages = new ArrayList<>();




for(Object truc : jsonList) {
String jsonInString = gson.toJson(truc); /**on force à ce qu'il soit reconnu comme json */
mapApp = gson.fromJson(jsonInString, new TypeToken<Map<String, Object>>() {}.getType()); //on l'insère dans une map
//mapApp.forEach((x,y)-> System.out.println("key : " + x + " , value : " + y));
//System.out.println(mapApp.get("totalNumMessages"));
listFailures.add(mapApp.get("totalFailures")); //on ajoute la donnée voulue dans la liste
listTime.add(mapApp.get("totalProcessingTimeAvg"));
listTime.add(mapApp.get("totalNumMessages"));
listSuccesses.add(mapApp.get("totalSuccesses"));
listExceptions.add(mapApp.get("totalExceptions"));
listNumMessages.add(mapApp.get("totalNumMessages"));
}
}
catch (IOException e) {
System.out.println(e);
}
}

return mapApp;
}


public static double sumData(ArrayList<Object> list) {
double somme=0;
for (Object objet : list) {
somme = somme + Double.parseDouble(objet.toString());
}
return somme;
}

public static double sumTime(ArrayList<Object> list) {
double somme=0;
int n = list.size();
for (int i=0; i<(n-1); i++) {
i=i+1;
somme = somme + (Double.parseDouble(list.get(i-1).toString())*(Double.parseDouble(list.get(i).toString())));
}
double moy = somme/(n/2);
return moy;
}

public static Map<String, Object> getTimeline(String from, String to, String orga, String client) throws IOException {

Map<String, Object> mapApp = null;
String organization = URLEncoder.encode(orga, "UTF-8");

try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
System.setProperty("jsse.enableSNIExtension", "false");

final String url;

if (client == null) {
url = "https://vespa-prd-api1-gmg.rte-france.com/api/portal/v1.3/metrics/reports/app/timeline/0/numMessages?from="+from+"T22%3A00%3A00Z&to="+to+"T14%3A46%3A58Z&organization="+organization+"&reportsubtype=trafficAll";
}
else {
url = "https://vespa-prd-api1-gmg.rte-france.com/api/portal/v1.3/metrics/reports/app/timeline/0/numMessages?from="+from+"T22%3A00%3A00Z&to="+to+"T14%3A46%3A58Z&organization="+orga+"&client="+client+"&reportsubtype=trafficAll";
}

final HttpGet get = new HttpGet(url);
get.addHeader("Authorization", "Basic YXBpYWRtaW46Y2hhbmdlbWU=");
try (final CloseableHttpResponse response = httpClient.execute(get)) {

if (response.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
System.out.println("Erreur : "+response.getStatusLine().getStatusCode());
}

String jsonResponse = EntityUtils.toString(response.getEntity());

ObjectMapper objectmapper = new ObjectMapper();
objectmapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);
ArrayList<Object> jsonList = objectmapper.readValue(jsonResponse,ArrayList.class);

//JSON PARSER
final GsonBuilder builder = new GsonBuilder();
builder.setPrettyPrinting();
builder.disableHtmlEscaping();
builder.serializeNulls();
builder.setLenient();
final Gson gson = builder.create();

ArrayList<Object> listData= new ArrayList<>();


for(Object truc : jsonList) {
String jsonInString = gson.toJson(truc);
mapApp = gson.fromJson(jsonInString, new TypeToken<Map<String, Object>>() {}.getType()); //on l'insère dans une map
//mapApp.forEach((x,y)-> System.out.println("key : " + x + " , value : " + y));
String jsonSeries = gson.toJson(mapApp.get("series"));

ArrayList<Object> jsonList2 = objectmapper.readValue(jsonSeries, ArrayList.class);

for (Object truc2 : jsonList2) {
String jsonString = gson.toJson(truc2);
Map<String, Object> mapApp2 = gson.fromJson(jsonString, new TypeToken<Map<String, Object>>() {}.getType());
//mapApp2.forEach((x, y) -> System.out.println("key : " + x + " , value : " + y));
listData.add(mapApp2.get("data"));
}
}
//System.out.println(listData);
}
}
return mapApp;
}

}

这是我的类路径文件(由 Eclipse 自动生成):

<?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/jre1.8.0_181">
<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 v7.0 (2)">
<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="C:/Users/piriouame/eclipse-workspace/lib/gson-2.6.2.jar"/>
<classpathentry kind="lib" path="C:/Users/piriouame/eclipse-workspace/lib/gson-2.8.5-javadoc.jar"/>
<classpathentry kind="lib" path="C:/Users/piriouame/eclipse-workspace/lib/jackson-annotations-2.6.0.jar"/>
<classpathentry kind="lib" path="C:/Users/piriouame/eclipse-workspace/lib/jackson-core-2.6.3.jar"/>
<classpathentry kind="lib" path="C:/Users/piriouame/eclipse-workspace/lib/jackson-databind-2.6.3.jar"/>
<classpathentry kind="lib" path="C:/Users/piriouame/eclipse-workspace/lib/jackson-dataformat-csv-2.1.2.jar"/>
<classpathentry kind="lib" path="C:/Users/piriouame/eclipse-workspace/lib/httpcomponents-client-4.5.6/lib/commons-codec-1.10.jar"/>
<classpathentry kind="lib" path="C:/Users/piriouame/eclipse-workspace/lib/httpcomponents-client-4.5.6/lib/commons-logging-1.2.jar"/>
<classpathentry kind="lib" path="C:/Users/piriouame/eclipse-workspace/lib/httpcomponents-client-4.5.6/lib/fluent-hc-4.5.6.jar"/>
<classpathentry kind="lib" path="C:/Users/piriouame/eclipse-workspace/lib/httpcomponents-client-4.5.6/lib/httpclient-4.5.6.jar"/>
<classpathentry kind="lib" path="C:/Users/piriouame/eclipse-workspace/lib/httpcomponents-client-4.5.6/lib/httpclient-cache-4.5.6.jar"/>
<classpathentry kind="lib" path="C:/Users/piriouame/eclipse-workspace/lib/httpcomponents-client-4.5.6/lib/httpclient-win-4.5.6.jar"/>
<classpathentry kind="lib" path="C:/Users/piriouame/eclipse-workspace/lib/httpcomponents-client-4.5.6/lib/httpcore-4.4.10.jar"/>
<classpathentry kind="lib" path="C:/Users/piriouame/eclipse-workspace/lib/httpcomponents-client-4.5.6/lib/httpmime-4.5.6.jar"/>
<classpathentry kind="lib" path="C:/Users/piriouame/eclipse-workspace/lib/httpcomponents-client-4.5.6/lib/jna-4.4.0.jar"/>
<classpathentry kind="lib" path="C:/Users/piriouame/eclipse-workspace/lib/httpcomponents-client-4.5.6/lib/jna-platform-4.4.0.jar"/>
<classpathentry kind="output" path="WebContent/WEB-INF/classes"/>
</classpath>

提前感谢您的帮助:)

最佳答案

请确保 apache httpclient lib 已加载到您的类路径中。如果您使用 maven/gradle,请检查您是否添加了给定的库。

关于java - 错误 java.lang.NoClassDefFoundError : org/apache/http/client/methods/HttpUriRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52965701/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com