java - Java Library编译后如何使用?

标签 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 中,我转到“项目结构 -> 模块 -> 添加 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/

相关文章:

Java8 lambda 嵌套 null 检查

本年度的Maven属性(property)

java - 如何获取执行jar的绝对路径?

android - 如何在Android Studio中解决此构建问题(aapt2文件不存在)?

servlets - 如何在JettyRunner的Gradle项目中包含servlet jar?

java - Node.js http服务器并发问题

java - 找到缓慢 JSP 根本原因的最佳技术是什么?

android - Android 中的 play-services-base 与 -basement 依赖关系 (AAR)

android - 导入的Eclipse项目-具有不同AndroidManifests的Gradle buildTypes

java - 为什么我只得到钢琴音符(Java)?