2014-07-21 48 views
0

我有简单的程序,线程“main”中的异常java.lang.NoClassDefFoundError。不执行,但编译

package access; 

class Coffee { 

    void met() { 
     System.out.println("they accessed me"); 
    } 

    public static void main(String[] args) { 
    } 
} 

我在路径E:\sarvari\access。它的编译正确,我在访问目录中有.class文件。我的CLASSPATH".;C:\Program Files (x86)\Java\jre6\lib\ext\QTJava.zip;"我无法弄清楚,为什么它没有执行。 的“Java咖啡” 给我

Exception in thread "main" java.lang.NoClassDefFoundError: access/Coffee 
Caused by: java.lang.ClassNotFoundException: access.Coffee" 

回答

0

您需要使用完整的类限定名

java access.Coffee 

此外,如果有,你都面临着classpath中一些问题,你总是可以做

java -cp . access.Coffee 

(考虑类文件在当前目录中)

+0

此外,该程序首先进行编译时,Coffee.class文件必须在访问目录。 –

+0

@Hot Licks:OP说他的问题是:“它编译正确,我在访问目录中有.class文件” –

+0

而* java *命令必须从包含* access *的目录运行,而不是从*访问*目录。 –

0

classpath开关需要指向包目录的起始位置(访问目录,而不是Coffee.class所在的目录)。更改目录,以使当前目录只是上述包装中的顶级目录:

cd E:\sarvari 
java -cp . access.Coffee 

这是假设你的咖啡类是在E:\ sarvari \访问

是什么在CLASSPATH是相当无关。

1

使用

javac -d . FileName.java 

,那么你应该使用运行

java -cp . access.Coffee // access is your package and coffee is your created class file. 
          // here . represents the present dir. 
相关问题