1

我正在尝试使用 HtmlUnit 设置我的第一个示例程序。这是代码:

import com.gargoylesoftware.htmlunit.html.HtmlPage;
import com.gargoylesoftware.htmlunit.WebClient;


public class test {

public static void main(String[] args) throws Exception {

    WebClient client = new WebClient();
    HtmlPage currentPage = client.getPage("http://www.oddsportal.com/matches/soccer");
    client.waitForBackgroundJavaScript(10000);
    String textSource = currentPage.asXml();
    System.out.println(textSource);

}

}

然后我编译:

javac -cp lib/htmlunit-2.9.jar test.java

但是当我尝试执行测试时,我得到了

java -cp lib/htmlunit-2.9.jar 测试

线程“主”java.lang.NoClassDefFoundError 中的异常:测试原因:java.lang.ClassNotFoundException:在 java.security.AccessController.doPrivileged(Native Method) 的 java.net.URLClassLoader$1.run(URLClassLoader.java:217) 测试) 在 java.net.URLClassLoader.findClass(URLClassLoader.java:205) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:321) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) 在 java .lang.ClassLoader.loadClass(ClassLoader.java:266) 找不到主类:test。程序将会退出。

哪里有问题?我缺少一些其他的包?

4

2 回答 2

4

您可能必须将当前路径添加到类路径。

在 Unix/Linux/Mac 上:

java -cp .:lib/htmlunit-2.9.jar test

在 Windows 上:

java -cp .;lib/htmlunit-2.9.jar test

编辑 实际上 htmlunit 需要更多的 jars,而只是 htmlunit-2.9.jar。因此,考虑到所有这些必需的 jar 文件都位于 lib/ 目录中,您实际上应该调用以下命令:

在 Unix/Linux/Mac 上:

java -cp .:lib/* test

如果从 shell 运行此命令,还需要转义通配符(使用“\”)或将整个类路径放在引号内以避免 shell 扩展。

在 Windows 上:

java -cp .;lib/* test
于 2012-04-08T16:47:52.033 回答
0

这有效:

java -cp .:lib/* 测试

于 2012-04-08T18:57:57.720 回答