2013-04-09 44 views
1

我有简单的Hello word程序。当程序不在代码中声明命名空间时编译并运行,但是当我在命名空间内声明该类并编译该程序时,它将成功编译,但是在此程序运行时它将给出错误classnotfound。我的问题是为什么java编译器无法在代码中声明命名空间(包)时找到类?java命令中的ClassNotFound异常

请在下面找到源代码:

package org; 

public class Chunk 
{ 

    public static void main(String [] args) 
    { 
    System.out.println("Hello, World"); 
    } 
} 

和命令是

java org.Chunk 

和错误是

java.lang.NoClassDefFoundError: org/Chunk 
Caused by: java.lang.ClassNotFoundException: org.Chunk 
     at java.net.URLClassLoader$1.run(Unknown Source) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(Unknown Source) 
     at java.lang.ClassLoader.loadClass(Unknown Source) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
     at java.lang.ClassLoader.loadClass(Unknown Source) 
Could not find the main class: org.Chunk. Program will exit. 
Exception in thread "main" 
+1

从哪里运行它?尝试从'org'文件夹的父项运行它。 – Ankit 2013-04-09 10:39:17

回答

1

你得到这个错误可能是因为这个类不是类路径的一部分。您可以使用-cp java选项指定类路径,以指向找到org.Chunk类的目录/ jar。

+0

他可能只是试图从错误的父文件夹中运行它。 – NilsH 2013-04-09 10:42:27

+0

@NilsH是的,那也是我的填充。使用'-cp'并指定正确的目录,将允许他从任何位置运行测试。 – dan 2013-04-09 10:47:24

+0

是的,我从错误的位置运行命令。现在我改变了父母的词典,并解决了问题。但是当运行java -cp mytest.jar classname命令时,我遇到了类似的问题。你能帮助我为什么这个命令提升类没有找到错误 – 2013-04-09 12:20:05