我在 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
然后我得到了上面的异常。我是否正确编译并运行了它?为什么我得到这个异常(exception)?谢谢。
最佳答案
保存类文件 (.
) 的文件夹不在类路径中。添加另一个 :.
到类路径:
java -cp ./htmlparser.jar:./filterbuilder.jar:./sitecapturer.jar:./thumbelina.jar:./htmllexer.jar:. Crawler arg0 arg1
关于Java 无法在 Linux 中的 .jar 文件中找到类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26068809/