我意识到这可能是一个非常简单的问题,但我已经连续几天研究它但无济于事。任何帮助将不胜感激。
我的项目结构如下所示:
src
|--Main.java
|--WebScrapper.java
out
|--Main.class
|--WebScrapper.java
lib
|--Jsoup
我的 WebScrapper.java 文件导入 Jsoup 库实用程序,如下所示:
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
import org.jsoup.nodes.Element;
我在 InteliJ IDE 上的项目中使用 Java 库。在 IDE 中,我转到“项目结构 -> 模块 -> 添加 Jars 或目录”,我的程序通过在 IntelliJ 中选择“运行”按钮来运行,但是当我编译 Java 代码并尝试从终端使用“java Main.class”运行它时,出现以下错误:
Exception in thread "main" java.lang.NoClassDefFoundError: org/jsoup/Jsoup
at WebScrapper.returnPage(WebScrapper.java:12)
at Main.main(Main.java:19)
Caused by: java.lang.ClassNotFoundException: org.jsoup.Jsoup
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source)
at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
... 2 more
我知道这是库的问题,而不是我的其他类文件的问题,因为当我将其他类文件更改为简单的 System.out.printl 语句时,它工作得很好。如何让这种依赖关系在我的项目中发挥作用?我需要创建一个 lib 文件夹并执行某些操作吗?或者是别的什么?我浏览了有关堆栈溢出的许多其他问题,并且看到了诸如清理构建、使用依赖关系管理插件(如 Maven 等)等解决方案。但是,重建项目不起作用,我希望尽可能避免使用依赖关系管理系统,但如果需要,我会这样做。
提前致谢,迈克尔
最佳答案
运行类时,您必须将库添加到类路径中;这是通过使用例如来完成的-cp path-to-jsoup.jar
.
当有更多 jar 文件时,您必须通过在 Windows 中使用 ;
和在 Linux 中使用 :
分隔来列出所有文件。
您最好尝试在 IntelliJ 终端面板中运行类上层时找到 IntelliJ 使用的命令,以便更好地理解编写它的类似方式。
关于java - Java Library编译后如何使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53456260/