java.lang.ClassNotFoundException:com.eclipsesource.json.JsonObject

问题描述

我一直在尝试从servlet调用java类,该servlet在JSP页面上打印数据。 java类返回JSON响应,我可以在控制台中将其打印出来。我已经在servlet中调用java类,并通过JSP页面运行servlet。

我可以使用Servlet直接将JSON响应打印到JSP页面上吗?如果是这样,我将面临以下错误

PS:我已经尝试了所有针对此错误的可用技巧,但没有一个我有用。

SEVERE: Servlet.service() for servlet [com.serves.getData] in context with path [/Demo] threw exception [Servlet execution threw an exception] with root cause
java.lang.classNotFoundException: com.eclipsesource.json.JsonObject
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1308)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1142)
    at com.tadigital.marketo.servlet.MultipleEmails.getToken(MultipleEmails.java:116)
    at com.tadigital.marketo.servlet.MultipleEmails.getData(MultipleEmails.java:74)
    at com.tadigital.marketo.serves.getData.doGet(getData.java:44)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:522)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1095)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672)
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2500)
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2489)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(UnkNown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(UnkNown Source)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(UnkNown Source) 

这是我的代码

java类

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.NoSuchElementException;
import java.util.Scanner;

import javax.net.ssl.HttpsURLConnection;

import com.eclipsesource.json.JsonObject;

//the Java sample code on dev.marketo.com uses the minimal-json package
//minimal-json provides easy and fast representations of JSON
//for more @R_827_4045@ion check out https://github.com/ralfstx/minimal-json

public class MultipleEmails {
    public String marketoInstance =  ;//Replace this with the host from Admin Web Services
    public String marketoIdURL = marketoInstance + "/identity"; 
    public String clientId = "";    //Obtain from your Custom Service in Admin>Launchpoint
    public String clientSecret = "";    //Obtain from your Custom Service in Admin>Launchpoint
    public String idEndpoint = marketoIdURL + "/oauth/token?grant_type=client_credentials&client_id=" + clientId + "&client_secret=" + clientSecret;
    public String status; //status filter
    public String offset; //offset returned from preveIoUs 
    public Integer maxreturn; //max 100,default 20
    public JsonObject folder; //JSON of parent folder with two members,ID and type(Folder or Program)
    
    public static void main(String[] args){
        MultipleEmails emails = new MultipleEmails();
        emails.maxreturn = 200;
        emails.folder = new JsonObject()
                            .add("id",1260)
                            .add("type","Folder");
        String result = emails.getData();
        System.out.println("Here you go...");
        System.out.println(result);
                }
    
    

    
    public String getData() {
        String data = null;
        try {
            //Assemble the URL
            StringBuilder endpoint = new StringBuilder(marketoInstance + "/rest/asset/v1/emails.json?access_token=" + getToken());
            //Append Optional Parameters
            System.out.println(endpoint);
            if (offset != null){
                endpoint.append("&offset=" + offset);
            }
            if (maxreturn != null){
                endpoint.append("&maxreturn=" + maxreturn);
            }
            if(status != null){
                endpoint.append("&status=" + status);
            }
            URL url = new URL(endpoint.toString());
            HttpsURLConnection urlConn = (HttpsURLConnection) url.openConnection();
            urlConn.setRequestMethod("GET");
            urlConn.setRequestProperty("accept","text/json");
            int responseCode = urlConn.getResponseCode();
            if (responseCode == 200) {
                InputStream inStream = urlConn.getInputStream();
                data = convertStreamToString(inStream);
                
            } else {
                data = "Status:" + responseCode;
            }
        } catch (MalformedURLException e) {
            System.out.println("URL not valid.");
        } catch (IOException e) {
            System.out.println("IOException: " + e.getMessage());
            e.printstacktrace();
        }
        return data;
    }   public String getToken(){
        String token = null;
        try {
            URL url = new URL(idEndpoint);
            HttpsURLConnection urlConn = (HttpsURLConnection) url.openConnection();
            urlConn.setRequestMethod("GET");
            urlConn.setRequestProperty("accept","application/json");
            int responseCode = urlConn.getResponseCode();
            if (responseCode == 200) {
                InputStream inStream = urlConn.getInputStream();
                Reader reader = new InputStreamReader(inStream);
                JsonObject jsonObject = JsonObject.readFrom(reader);
                token = jsonObject.get("access_token").asstring();
            }else {
                throw new IOException("Status: " + responseCode);
            }
        } catch (MalformedURLException e) {
            e.printstacktrace();
        }catch (IOException e) {
            e.printstacktrace();
        }
        return token;
    }
    private String convertStreamToString(InputStream inputStream) {

        try {
            return new Scanner(inputStream).useDelimiter("\\A").next();
        } catch (NoSuchElementException e) {
            return "";
        }
    }     
}

这个java类返回JSON数据作为响应。我通过以下方式在servlet中调用此类。

protected void doGet(HttpServletRequest request,HttpServletResponse response) throws servletexception,IOException {
        
        MultipleEmails me = new MultipleEmails();
        String s = me.getData();
        
    HttpSession session = request.getSession();

        session.setAttribute("GETEMAILS","Get Emails");
    session.setAttribute("DATA",s);

        
        Requestdispatcher rd = request.getRequestdispatcher("index.jsp");
        try {
            rd.forward(request,response);
        } catch (Exception e) {
            System.out.println(e);
        }
            

然后在JSP页面中,status2Global =(String)request.getAttribute(“ DATA”);使用这个我在页面上打印。但我面临上述异常。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)