【问题标题】:Java cannot find a class in a .jar file in LinuxJava 在 Linux 的 .jar 文件中找不到类
【发布时间】:2014-09-26 21:52:03
【问题描述】:

我在 Windows 的 Eclipse 中构建了一个 java 程序,它运行良好。该程序包括5个java类和5个jar库文件。

然后我将所有 *.java 文件和 *.jar 文件复制到 Linux。编译运行后出现异常,找不到htmlparser.jar的类PaserException。

Exception in thread "main" java.lang.NoClassDefFoundError: org/htmlparser/util/ParserException
Caused by: java.lang.ClassNotFoundException: org.htmlparser.util.ParserException
        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)

我刚开始学习 Linux,所以我不确定我是否正确编译和运行它。

我所有的文件(*.java和*.jar)都在同一个目录下,我的操作也在这个目录下。

编译:

javac -cp ./htmlparser.jar:./filterbuilder.jar:./sitecapturer.jar:./thumbelina.jar:./htmllexer.jar *.java

运行:(main方法在Crawler类中,main方法至少需要1个参数)

java -cp ./htmlparser.jar:./filterbuilder.jar:./sitecapturer.jar:./thumbelina.jar:./htmllexer.jar Crawler arg0 arg1

然后我得到了上面的异常。我是否正确编译并运行它?为什么我得到这个异常?谢谢。

【问题讨论】:

  • 您指定的java命令不正确。 -cp 需要先行。您指定它的方式,-cp 以及它后面的所有内容都将成为 Crawler 的主要方法的参数。不过,这会产生不同的错误消息,即未找到 Crawler 类。
  • 如你所说,如果我把-cp放在第一位,但我得到了一个异常 Crawler: Exception in thread "main" java.lang.NoClassDefFoundError: Crawler Caused by: java.lang.ClassNotFoundException:履带式
  • 那么你能教我正确的运行方法吗?
  • 如果真正下载你的程序是否使用JavaFX java oracle
  • 不,我没用过。

标签: java linux class exception jar


【解决方案1】:

保存类文件 (.) 的文件夹不在类路径中。在类路径中添加另一个:.

java -cp ./htmlparser.jar:./filterbuilder.jar:./sitecapturer.jar:./thumbelina.jar:./htmllexer.jar:. Crawler arg0 arg1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-25
    • 1970-01-01
    • 2013-04-27
    • 2013-07-25
    • 2023-03-11
    • 1970-01-01
    • 2017-01-22
    相关资源
    最近更新 更多