gpt4 book ai didi

java - Lotus Notes Java 代理的 GSON 库错误 - java.lang.NoClassDefFoundError : com. google.gson.JsonObject

转载 作者:行者123 更新时间:2023-12-01 19:35:32 24 4
gpt4 key购买 nike

我正在尝试使用 GSON 库将 Java 对象转换为 Lotus Notes 应用程序中 Java 代理中的 JSON。我已将 GSON jar 文件添加到 Project->Java Build Path 中。但是当我运行代理时,我收到错误 - “线程“AgentThread:JavaAgent”java.lang.NoClassDefFoundError:com.google.gson.JsonObject 中的异常”。

基本上我想要实现的是从外部 API 获取一些 JSON,然后将其保存在 Lotus Notes 数据库中。我能够发送 HTTP 请求,但我得到的返回是一个 Java 对象。我想将其转换为 JSON。

这是类文件,

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;

import org.apache.commons.validator.routines.UrlValidator;

import com.google.gson.JsonObject;
import com.google.gson.JsonParser;

public class CustRestConsumer {
/**
* Method for receiving HTTP JSON GET request against a RESTful URL data source.
*
* @param myUrlStr the URL of the REST endpoint
* @return JsonObject containing the data from the REST response.
* @throws IOException
* @throws MalformedURLException
* @throws ParseException
*/
public static JsonObject GetMyRestData( String myUrlStr ) throws IOException, MalformedURLException {
JsonObject myRestData = new JsonObject();
try{

UrlValidator defaultValidator = new UrlValidator();
if(defaultValidator.isValid(myUrlStr)){

URL myUrl = new URL(myUrlStr);
URLConnection urlCon = myUrl.openConnection();
urlCon.setConnectTimeout(5000);
InputStream is = urlCon.getInputStream();
InputStreamReader isR = new InputStreamReader(is);
BufferedReader reader = new BufferedReader(isR);
StringBuffer buffer = new StringBuffer();
String line = "";
while( (line = reader.readLine()) != null ){
buffer.append(line);
}
reader.close();
JsonParser parser = new JsonParser();
myRestData = (JsonObject) parser.parse(buffer.toString());

return myRestData;

}else{
myRestData.addProperty("error", "URL failed validation by Apache Commmons URL Validator");
return myRestData;
}
}catch( MalformedURLException e ){
e.printStackTrace();
myRestData.addProperty("error", e.toString());
return myRestData;
}catch( IOException e ){
e.printStackTrace();
myRestData.addProperty("error", e.toString());
return myRestData;
}
}
}

我在这里调用该函数,

import com.google.gson.JsonObject;

import lotus.domino.*;




public class JavaAgent extends AgentBase {

public void NotesMain() {

try {
Session session = getSession();
AgentContext agentContext = session.getAgentContext();

// (Your code goes here)
Database db = agentContext.getCurrentDatabase();

String url = "https://jsonplaceholder.typicode.com/todos/1";
System.out.println("Reached Here - 1");
JsonObject myStuff = CustRestConsumer.GetMyRestData(url);
System.out.println("Reached Here - 2");
System.out.println(myStuff);

Document newNotesDoc = db.createDocument();
newNotesDoc.replaceItemValue("Form", "IBMForm");
// newNotesDoc.replaceItemValue("WebPageUS", dto.title);
newNotesDoc.computeWithForm(true, false);
newNotesDoc.save(true, true);

db.recycle();

} catch(Exception e) {
e.printStackTrace();
}
}
}

这是 Java 调试控制台输出,

Reached Here - 1
Exception in thread "AgentThread: JavaAgent" java.lang.NoClassDefFoundError: com.google.gson.JsonObject
at CustRestConsumer.GetMyRestData(Unknown Source)
at JavaAgent.NotesMain(Unknown Source)
at lotus.domino.AgentBase.runNotes(Unknown Source)
at lotus.domino.NotesThread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: com.google.gson.JsonObject
at lotus.domino.AgentLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(ClassLoader.java:852)

我是 Java 代理新手,因此我们将不胜感激。谢谢。

最佳答案

项目->Java 构建路径用于在 XPage 中使用 JAR 文件。我相信jar文件可以直接添加到代理或脚本库中,但是分离它们会存在内存泄漏问题,因此不建议这样做。推荐的方法是将它们添加到服务器的 jvm\lib\ext 中,并且可能还添加到尝试编译代码的客户端。

还有其他用于在 Domino 中调度 Java 代码的选项,这里介绍了其中一些选项 https://www.intec.co.uk/tag/xots-microservice-scheduler-tutorial/ ,但还有其他可能的富有想象力的方法。

关于java - Lotus Notes Java 代理的 GSON 库错误 - java.lang.NoClassDefFoundError : com. google.gson.JsonObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57782932/

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