我试图在Java中将扫描字符串转换为JSONObject,并从JSON Simple导入JSON模块。我已经在构建路径中添加了JSON-simple-1.1.1.jar。然而,当我试图传递内联字符串时。我的内联字符串如下:{“events”:[{“url”:“/操纵多云国家”,“visitorId”:“03c0b5e0-3eeb-382a-8c6d-35e4bb189cf6”,“timestamp”:1515042087205},{“url”:“/race lazy control”,“visitorId”:“0832d11b-017a-388a-8a9e-77e5a1f6f4f4”,“timestamp”:1515042342655}}应该是我试图转换为JSONObject的一组数据。
编译器显示:异常在线程"main"java.lang.NoClassDefFoundError: org/json/Simple/JSONObject at Solution.main(Solution.java:45)引起:java.lang.ClassNotFoundException:org.json.simple.JSONObject atjava.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602)atjava.base/jdk.internal.loader.ClassLoaders$AppClassLoader.load(ClassLoaders.java:178)atjava.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)...1更多
我如何修复它,或者有更好的解决方案来转换它吗?请帮帮我!
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
public class Solution {
public static void main(String[] args) {
try {
//URL url = new URL(
"My API");
/**
*{"events":[{"url":"/manipulate-cloudy-country","visitorId":"03c0b5e0-3eeb-382a-8c6d-35e4bb189cf6","timestamp":1515042087205},...{"url":"/shoe-boundless-curtain","visitorId":"e367b3c8-3d48-345d-937c-0c4f6cce216a","timestamp":1515042137934},{"url":"/race-lazy-control","visitorId":"0832d11b-017a-388a-8a9e-77e5a1f6f9f4","timestamp":1515042342655}]}
**/
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.connect();
int responseCode = conn.getResponseCode();
if (responseCode != 200) {
throw new RuntimeException("HttpResponseCode: " + responseCode);
} else {
String inline = "";
Scanner scanner = new Scanner(url.openStream());
while (scanner.hasNext()) {
inline += scanner.nextLine();
}
// Close the scanner
scanner.close();
JSONObject obj = new JSONObject();
JSONParser p = new JSONParser();
p.parse(inline);
}
} catch (Exception e) {
e.printStackTrace();
} ```
你的问题与JSON解析无关,而是如何使用Java库。
您发布的代码显示您正在导入类似org.json.simple的类。JSONObject不属于Java标准库的一部分,因此您需要将它们提供给Java运行时,通常需要将jar包括在所谓的类路径中,jar基本上是一个包含类文件(.class
文件,Java文件的编译版本)的zip文件,Java运行时在该路径中查找要加载的类。
下面是一个示例,说明如何运行您的程序,以防您已经在
libs/simple-json.jar
上拥有了simple-json jar,并且您已经编译了Solution
类:
java -cp libs/simple-json.jar Solution
这样,Java运行时将在jar中找到JSON类,一切都应该正常工作。
如果在类路径中需要更多JAR,可以使用Mac/Linux上的
:或
在Windows上。
例如:
java -cp libs/simple-json.jar:libs/other-lib.jar Solution
有关其工作原理的详细信息,请参阅此答案。
这是我的申请 数据源:类型:com.zaxxer.hikari.HikariDataSource主要: 这是我的入门: 这是我的例外: 2017-11-21 10:10:33.126线程“main”中的表现:java.lang.运行时异常: java.lang.ClassCastException: 无法将 com.mysql.cj.jdbc.Driver to javax.sql.DataSou
问题内容: 我正在从我的一个类中执行Java二进制文件,并且抛出ClassNotFoundException: Geoline类位于/home/geo/Geoline.java。关键是,无论我位于文件系统中的哪个位置,如果我手动执行相同的命令,都将执行该类。使用Runtime.getRuntime()。exec执行二进制文件时,为什么不会发生相同的事情? 编辑:这是在verbose标记上生成的输出
问题内容: 这是我的XML文件: 我做了两个类来解析它(Fields.java和Field.java): 和 但是我得到这个例外。 我不明白为什么会出现这种异常。异常在这里: 我使用的是JDK 1.6_0.0.7。谢谢。 问题答案: 例外是由于您的JAXB(JSR-222)实现认为存在两个名称相同的事物(一个字段和一个属性)。您的用例有两个选项: 选项#1-使用以下注释字段 如果要注释该字段,则应
我的代码出现错误: 我的示例的完整代码如下:
问题内容: 我正在使用iReport构建jaspersoft报告,并且正在使用Fishbowl作为我的DBMS。 我建立了表,并在iReport中显示了我的表是关系型的,但是由于某种原因,它使我出错并且无法运行。它应该非常简单。我要输入邮政编码,日期范围或州名,并输出productName,已实现的总数量,邮政编码和州名的缩写。 当我确实将报告上载到Fishbowl时,它可以运行,但最终崩溃并显示
问题内容: final Multimap terms = getTerms(bq); for (Term t : terms.keySet()) { Collection C = new HashSet(terms.get(t)); if (!C.isEmpty()) { for (Iterator it = C.iterator(); it.hasNext();) { BooleanClause