包含的Jsoup库将编译但不能运行

时间:2014-05-31 18:32:32

标签: java jsoup noclassdeffounderror

我试图在Java中探索webscraping,我刚刚开始使用一个非常基本的Jsoup程序。我很确定我正在做的事情存在某种路径问题。我尝试了不同的变体,只是为了让它工作,通过将库包含在与我的源文件相同的目录中来简化过程(为了简化路径,我弄清楚发生了什么)。这是我一直在做的和输出:

javac -cp jsoup-1.7.3.jar URLParse.java

以上编译时没有错误(当我将jar放在自己的文件夹中并指定路径时,它也编译得很好),当我尝试运行程序时会发生以下情况:

java -cp jsoup-1.7.3.jar URLParse.java
Exception in thread "main" java.lang.NoClassDefFoundError: URLParse/java
Caused by: java.lang.ClassNotFoundException: URLParse.java
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
Could not find the main class: URLParse.java. Program will exit.

以下是有用的代码:

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

import java.io.IOException;

public class URLParse{

   public static void main(String[] args){


      String URL = "http://www.google.com";

      try{

         Document doc = Jsoup.connect(URL).get();
         System.out.println("Ok here");
         String title = doc.title();

         System.out.println(title);
      } catch (IOException e){
         e.printStackTrace();
      }

   }

}

感谢您提供任何帮助或建议。

2 个答案:

答案 0 :(得分:1)

我认为这里的问题是你没有在classpath变量中包含带有主类代码的目录。

java -cp jsoup-1.7.3.jar URLParse.java

应该是

java -cp .:jsoup-1.7.3.jar URLParse

在Mac / Linux和

java -cp .;jsoup-1.7.3.jar URLParse

在Windows上。请注意,您在尝试运行的类中不包含.java。

Information taken right from this.

答案 1 :(得分:0)

假设您有类似的目录结构:

enter image description here

并且您正在尝试运行您需要的URLParse课程:

java -classpath testPackage/jsoup-1.7.2.jar:. testPackage.URLParse

enter image description here

有关详细信息,请参阅 Java Glossary