Caused by: java.lang.NoClassDefFoundError: org/quartz/Job

java test 报错内容:

Exception in thread "main" java.lang.NoClassDefFoundError: org/quartz/Job
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        at test.addJob(test.java:37)
        at test.main(test.java:12)
Caused by: java.lang.ClassNotFoundException: org.quartz.Job
        at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        ... 14 more

现象是:开发工具里面运行一切正常,DOS用java执行就报错。
处理方案:用java -cp(java -classpath)运行,

windows:
java -cp .;c:\work\*.jar test
linux:
java -cp .:/home/myuser/work/lib/my.jar test
这个异常: ``` Caused by: java.lang.NoClassDefFoundError: org/jsoup/nodes/Node ``` 表示你的程序在运行时 **找不到 `org.jsoup.nodes.Node` 这个类**,尽管编译时是存在的。这是典型的 **依赖缺失问题**。 --- ## 🔍 问题分析 - `jsoup` 是一个用于解析 HTML 的 Java 库。 - `org.jsoup.nodes.Node` 是 jsoup 核心包中的基础类。 - 出现 `NoClassDefFoundError` 意味着:**JVM 在启动或执行过程中无法加载该类**,通常是因为 **运行时 classpath 中缺少对应的 jar 包**。 --- ## ✅ 解决方案 ### ✅ 方案一:添加 Jsoup 依赖(推荐) 根据你使用的构建工具,添加 `jsoup` 依赖。 #### 如果使用 **Maven** 在 `pom.xml` 中加入: ```xml <dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.17.2</version> <!-- 推荐最新稳定版 --> </dependency> ``` 然后执行: ```bash mvn clean compile mvn dependency:copy-dependencies ``` 确保 jar 被正确打包进项目。 --- #### 如果使用 **Gradle** 在 `build.gradle` 中添加: ```groovy implementation 'org.jsoup:jsoup:1.17.2' ``` 然后同步项目。 --- ### ✅ 方案二:手动下载并添加 JAR 到类路径(不推荐,仅临时用) 如果你不用构建工具(如直接 `javac` + `java`): 1. 访问 [https://jsoup.org/download](https://jsoup.org/download) 2. 下载 `jsoup-1.17.2.jar` 3. 将其放入项目目录,例如 `lib/jsoup-1.17.2.jar` 4. 编译和运行时显式指定 classpath: ```bash javac -cp ".;lib/jsoup-1.17.2.jar" YourClass.java java -cp ".;lib/jsoup-1.17.2.jar" YourClass ``` > ⚠️ 注意:Windows 使用分号 `;`,Linux/Mac 使用冒号 `:` --- ### ✅ 方案三:确保 Jar 被正确打包进最终的 Fat Jar / WAR 如果你打成了 `jar` 包并运行时报错: ```bash java -jar your-app.jar ``` 但提示 `NoClassDefFoundError`,说明依赖没有被打进去。 #### 解决方法:使用 Maven Shade Plugin 打成可执行 Fat Jar 在 `pom.xml` 中添加插件: ```xml <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.5.0</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <mainClass>com.yourcompany.MainClass</mainClass> </transformer> </transformers> </configuration> </execution> </executions> </plugin> </plugins> </build> ``` 然后构建: ```bash mvn clean package ``` 生成的 `target/your-app-1.0-SNAPSHOT.jar` 就包含了所有依赖(包括 jsoup),可以独立运行。 --- ## 🛠 常见排查步骤 | 步骤 | 操作 | |------|------| | 1 | 查看完整堆栈,确认哪一行代码触发了该错误 | | 2 | 检查 `pom.xml` 是否真的添加了 jsoup 依赖 | | 3 | 执行 `mvn dependency:tree` 查看是否成功引入 | ```bash mvn dependency:tree | grep jsoup ``` 输出应类似: ``` \[INFO] +- org.jsoup:jsoup:jar:1.17.2:compile ``` | 4 | 检查最终 jar 包中是否有 jsoup 类文件 | ```bash jar -tf target/your-app.jar | grep "org/jsoup/nodes/Node.class" ``` 如果没有输出,说明没打进包。 | 5 | 确保 IDE 没有缓存旧类路径(IntelliJ: File → Invalidate Caches) | --- ## 💡 示例:正确使用 Jsoup 的代码 ```java import org.jsoup.Jsoup; import org.jsoup.nodes.Document; public class HtmlParser { public static void main(String[] args) { try { Document doc = Jsoup.connect("https://example.com").get(); System.out.println(doc.title()); } catch (Exception e) { e.printStackTrace(); } } } ``` 只要依赖正确,就不会报 `NoClassDefFoundError`。 --- ## ❗ 特别注意 - `NoClassDefFoundError` ≠ `ClassNotFoundException` - `NoClassDefFoundError`:类曾经存在但初始化失败(如静态块出错)或运行时找不到 - 本例通常是“运行时缺 jar” --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值