无法在简单的Java Soup应用程序上找到或加载主类

时间:2017-05-21 15:07:04

标签: java web-scraping jsoup classpath

我编译了这个简单的程序,我找到了here

package com.stackoverflow.q2835505;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class Test {

public static void main(String[] args) throws Exception {
    String url = "https://stackoverflow.com/questions/2835505";
    Document document = Jsoup.connect(url).get();

    String question = document.select("#question .post-text").text();
    System.out.println("Question: " + question);

    Elements answerers = document.select("#answers .user-details a");
    for (Element answerer : answerers) {
        System.out.println("Answerer: " + answerer.text());
    }
}

}

在终端中使用此命令:

javac -cp ./jsoup-1.10.2.jar Test.java

但是当我尝试运行它时我会这样做:

  

错误:无法找到或加载主类

我无法找到解决方案,问题出在哪里?感谢。

1 个答案:

答案 0 :(得分:1)

您可能会遇到多个问题......

<强>的Javac 即可。可以肯定的是,像这样编译Java应用程序:

javac -cp ./jsoup-1.10.2.jar -d . Test.java

-d选项确保已编译的类放在相应的目录中:

com/stackoverflow/q2835505/Test.class

而不是当前目录。让check the man page只是为了确定(-d选项):

  

设置类文件的目标目录。该目录必须已存在,因为javac未创建该目录。如果类是包的一部分,则javac将类文件放在反映包名称的子目录中,并根据需要创建目录。

     

如果-d选项未指定 ,则javac会将每个类文件放在与生成它的源文件相同的目录中。

<强>爪哇即可。最后,使用:

运行它
java -cp .:./jsoup-1.10.2.jar com.stackoverflow.q2835505.Test

这会使用您当前的目录(.)和jsoup-1.10.2.jar作为您的类路径来运行您的应用。当前目录是必需,因此java会找到您的Test.class以及JSoup jar。

有关java命令语法的更多信息,请参阅this nice answer