java - 使用外部 jar 运行编译的程序时出错

标签 java jar

我在一个文件夹中有一个简单的 jsoup 测试应用程序,其中有 2 个类 - LyricsGetter.java 和 Main.java - 以及一个带有 jsoup 库的 .jar 文件。当我使用命令 javac -cp jsoup-1.8.2.jar LyricsGetter.java Main.java 编译文件时,一切编译正常,但是当我尝试使用 java Main 运行时,我得到:

Exception in thread "main" java.lang.NoClassDefFoundError: org/jsoup/Jsoup
    at LyricsGetter.getLyrics(LyricsGetter.java:16)
    at Main.main(Main.java:14)
Caused by: java.lang.ClassNotFoundException: org.jsoup.Jsoup
    at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 2 more

另一方面,如果我使用 java -cp jsoup-1.8.2.jar Main 运行,则会收到 Error: Could not find or load main class Main 。那么,运行这个程序的正确方法是什么?

最佳答案

您需要告诉 Java 在 jsoup-1.8.2.jar 和当前文件夹 (.) 中查找类。

在 Windows 上,使用:

java -cp jsoup-1.8.2.jar;. Main

或者在 Linux、OSX 或其他类 Unix 系统上使用:

java -cp jsoup-1.8.2.jar:. Main

(区别在于路径在 Windows 上用 ; 分隔,在 *nix 上用 : 分隔)

关于java - 使用外部 jar 运行编译的程序时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30584380/

相关文章:

java - LDAP Java - 跨受信任域搜索组成员身份

java - 如何在 Alfresco 社区中设置标题和描述?

java - 为什么我的程序在 eclipse 中可以运行,但在使用 maven 进行 jar 时会生成 "filename, directory name, or volume label syntax is incorrect"错误?

java - 将目录添加到 jar 中,用于插入外部 jar 或类

android - 如何在没有 Eclipse 的情况下向 APK 添加 jar 并使 APK 引用它?

java - 有没有办法在调试时永久更改变量的值,以便在后续调用中不会覆盖它?

java - 序列化 DataTable (WCF) 到 Android 项目

java - spring boot 中所有资源都需要设置默认角色吗?

java - 在 JRuby 中调用自定义 Java 类

jar - android studio 添加 extern jar 库