0

我有以下目录结构:

somedir/
    lib/
        myapp.jar
        commons-io-2.1.jar
        ...lots of otherjars

从内部somedir,我尝试运行以下命令:

java -cp lib/* net.myapp.Driver /home/myUser.blah.text

我得到以下异常:

Exception in thread "main" java.lang.NoClassDefFoundError: lib/commons-io-2/1/jar
Caused by: java.lang.ClassNotFoundException: lib.commons-io-2.1.jar
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Could not find the main class: lib/commons-io-2.1.jar.  Program will exit.

为什么它告诉我它在 Apache Commons IO 中找不到“main”?我可能能够理解它是否找不到我的Driver课程(也许我配置错误),但这只是让我失望。想法?提前致谢!

4

3 回答 3

0

你也可以试试 java -cp /lib/* net.myapp.Driver /home/myUser.blah.text

于 2013-12-09T11:16:15.923 回答
0

使用引号。

java -cp "lib/*" net.myapp.Driver /home/myUser.blah.text

这里解释得很好。

于 2013-12-09T10:12:46.193 回答
0

从堆栈跟踪来看,好像 java 正在将 commons-io Jar 用于一个类,这让我产生了一个疯狂的猜测:这可能是一个空白问题吗?lib是否有可能包含一个带有空格的jar?您是否尝试将 cp 选项括在引号中(即使用 -cp "lib/*")?

于 2013-12-09T10:12:46.057 回答