java命令行

时间:2012-10-24 09:50:15

标签: java classpath

我目前正在使用linux,我必须以

的形式运行命令
java -cp .:../jarfile.jar doc.DocDump <file>

假设我当前在文件夹/ home / noor / downloads / commands / commandDump中。假设,我需要从任何地方运行命令,我正在尝试下面的命令,但它没有运行。

假设我现在在家

java -cp .:/home/noor/downloads/commands/commandDump/../jarfile.jar doc.DocDump

“commands”文件夹包含jarfile.jar,还包含一个文件夹“command”,然后包含一个文件夹“doc”,然后包含“DocDump”类

我收到了这个错误:

 Exception in thread "main" java.lang.NoClassDefFoundError: Doc/DocDump
Caused by: java.lang.ClassNotFoundException: Doc.DocDump
    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:321)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: doc.DocDump. Program will exit.

3 个答案:

答案 0 :(得分:1)

我建议您查看清单文件文档,特别是classpath部分。

在清单文件中指定依赖项,除了在从命令行启动时允许更紧凑的语法时,可以在目录中指定相对于主jar而不是当前目录的条目。

请记住,在这种情况下,您必须使用以下命令启动您的应用程序:

java -jar <<yourjar.jar>> <<options>>

答案 1 :(得分:0)

Linux在路径上区分大小写。您的路径包含“downloads”目录,而在java命令中您使用的是“Downloads”目录。

此外,要运行的类将是相同的:doc.DOCDump无处不在。您可以使用package.className指定类,而不是类文件的某个路径。

答案 2 :(得分:0)

您作为main提供的类文件不需要任何文件路径前缀。只需输入:

java -cp .:/home/noor/Downloads/commands/jarfile.jar doc.DocDump <file>

虚拟机将在类路径(您已指定)中查找该doc.DocDump类。