编译后如何使用Java库?

时间:2018-11-24 07:53:13

标签: java maven gradle jsoup

我意识到这可能是一个非常简单的问题,但是我已经连续数天对其进行了研究,但无济于事。任何帮助将不胜感激。

我的项目结构如下:

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中,我转到“项目结构->模块->添加jar或目录”,然后通过选择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之类的依赖管理插件等解决方案。但是,重建项目无法正常进行,如果可能,我想避免使用依赖管理系统,但是,如果需要,我会这样做。

谢谢,迈克尔

1 个答案:

答案 0 :(得分:0)

在运行课程时,您必须将库添加到课程路径中;这是通过使用例如-cp path-to-jsoup.jar
如果有更多的jar文件,则必须通过在Windows中用;和在Linux中用:分开列出所有文件。
最好在IntelliJ终端面板中运行上层类时,找出IntelliJ所使用的命令,以便更好地了解您编写它的类似方式。