gpt4 book ai didi

Java NoClassDefFoundError 当 jar 明显有它时

转载 作者:行者123 更新时间:2023-11-29 09:51:12 24 4
gpt4 key购买 nike

我有一个简单的类,它从另一个 jar 中导入另一个类。一切都编译得很好,但试图运行它......

$ jar tvf ../../pig-2.1.jar  | grep TupleFact
1641 Mon Feb 02 17:56:32 UTC 2009 org/apache/pig/data/DefaultTupleFactory.class
2289 Mon Feb 02 17:56:30 UTC 2009 org/apache/pig/data/TupleFactory.class
$ javac ../src/Convert.java -classpath `echo ../lib/* ../../lib/* | sed 's/ /:/g'`
$ java Convert -classpath `echo ../lib/* ../../lib/* | sed 's/ /:/g'`
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/pig/data/TupleFactory
at Convert.<clinit>(Convert.java:31)
Caused by: java.lang.ClassNotFoundException: org.apache.pig.data.TupleFactory
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
... 1 more

有什么想法吗?你如何开始调试这个?

最佳答案

我认为问题在于您运行命令的方式:

java Convert -classpath `echo ../lib/* ../../lib/* | sed 's/ /:/g'`

应该是

java  -classpath `echo ../lib/* ../../lib/* | sed 's/ /:/g'` Convert

“java”命令的命令行语法是:

javac [ <options for the JVM> ... ] <classname> [ <application args> ... ]

如果您将“-classpath”选项放在类名之后,它将被视为应用程序参数,您将使用默认类路径执行您的应用程序。

关于Java NoClassDefFoundError 当 jar 明显有它时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1956365/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com