我写了个HELLO WORLD程序,为什么执行不能显示呢?具体信息如下:程序:
package test;
public class hello
{
public static void main(String[] args) 
{
System.out.println("Hello World!");
}
}编译和执行:F:\js>javac hello.javaF:\js>java test.hello
Exception in thread "main" java.lang.NoClassDefFoundError: test/hello
请问这是个什么错误?我是按照书上做的。

解决方案 »

  1.   

    既然是“package test;”,那么,你需要创建一个 test 目录:F:\js\test把 hello.java 放在 F:\js\test\hello.java然后,编译和运行位于 F:\fs> :F:\fs>javac test\hello.java
    F:\fs>java text.hello
      

  2.   

    谢谢sswater(水与争锋):
    我按你说的做了,可是还是有问题如下:F:\js>javac test\hello.javaF:\js>java test.hello
    Exception in thread "main" java.lang.NoClassDefFoundError: test/hello
      

  3.   

    请不要在Dos下调试程序,初学JAVA时几乎每个人都要碰到的问题就是这个了,推荐一个IDE给你,又简单又好用---------JCreator,非常适合初学.
      

  4.   

    java test/hellops:类名首字母建议大写
      

  5.   

    支持楼主用记事本,楼上用jcreator的建议我认为不是很好,
    不然楼主也不会碰到包这个问题了
      

  6.   

    谢谢 jgsfy(阿庙) :
    我下载后试了下,执行结果如下:
    Invalid command line. Error : Invalid pathCommand   : \bin\java.exe -classpath F:\js\test test.hello
    Directory : F:\js\test请问是什么问题?
      

  7.   

    不会吧,你写的程序我放到我的机器上跑过了,没有问题的。你用的 jdk 多少版本?我用的是 jdk1.5.0,我的 jdk 在:C:\jdk1.5.0
    环境变量需要设置为:PATH = C:\jdk1.5.0;%PATH%我就是放在 F:\js\test 下,并在 F:\js> 下正常运行的。
      

  8.   

    我用的是JDK1。4,PATH=%path%;c:\jdk1.4这样有影响码?
      

  9.   

    用jcreator不用配环境变量的
    PATH=%path%;c:\jdk1.4\bin
      

  10.   

    “我用的是JDK1。4,PATH=%path%;c:\jdk1.4这样有影响码?”放在前面吧,我刚才写错了,应该这样:( 有 bin )PATH = C:\jdk1.4\bin;%PATH%1.4 应该很容易运行的。(1.3 以及更低的版本还需要指定 jdk 内部的 jar 文件到 CLASSPATH 中。)
      

  11.   

    classpath没有配好吧
    要me 直接在 运行时加上classpath参数
      

  12.   

    谢谢各位,不管在DOS下还是用工具,现在都不能正常运行,这是个什么问题呢?该如何解决啊?刚学JAVA,就碰到这样的问题,郁闷啊!!!!
      

  13.   

    两种方案
       保证 classpath 中有 . 先
     1  去掉程序中的 package test;
     2  文件路径    F:\js\test\hello.class
                    F:\js> java test.hello
      

  14.   

    同意楼上的 先去掉PACKAGE 试试
      

  15.   

    F:\js> java test.hello
    这个就可以
    package test;这句是说你在test这个包里
    所以运行时要在test的父目录里运行
      

  16.   

    javac hello.java -d .
    java test.hello
      

  17.   

    刚开始学建议把package去掉 ,然后配置好path和classpath后直接javac hello.java
    java hello就可以了
      

  18.   

    环境变量CLASSPATH没有设置,建议看一下这方面的文章(网上应该有许多的)。就可以了
      

  19.   

    我也是初学者。也遇到这个问题:public class Welcome
    {
      public static void main(String[] args)
      {
        System.out.println("这是你的第一个程序,欢迎你走入Java的大门");
      }
    }C:\Welcome>javac Welcome.javaC:\Welcome>java Welcome.class
    Exception in thread "main" java.lang.NoClassDefFoundError: Welcome/class我用的是j2sdk1.4.2Path=C:\j2sdk1.4.2\bin;%path%
    classpath=.;C:\j2sdk1.4.2\lib\dt.jar;C:\j2sdk1.4.2\lib\tools.jar;C:\j2sdk1.4.2\jre\lib\rt.jar;C:\j2sdk1.4.2\jre\lib\charsets.jar;C:\j2sdk1.4.2\jre\lib\jaws.jar有高人能指点一下吗?
      

  20.   

    俺也是初学:)
    想问问,有没有〈 thinking in java>3rd 中文版的电子书下载。
    如今看着 英文版的,但 有的地方看不大懂。谢谢先
      

  21.   

    classpath不写也可以或是当前‘.’path是jdk的bin目录,编译时有自动按包结构形成文件夹及class文件的参数(-g记不清楚了),也可自建自复制,执行时要肯定按包结构有相应的文件夹及编译完class文件按一楼形式既java 包结构.classname就行
      

  22.   

    譬如你在TEMP目录 ,如果你package a.b 这样子的话,而文件名是C,你就要在TEMP目录下打java a.b.c
      

  23.   

    初学暂时不要用包
    先搞清classpath
      

  24.   

    java 执行时,用JAVA Welcome不能带扩展名的
      

  25.   

    HelloWorld 全攻略:
    http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=76270
      

  26.   

    public class Welcome
    {
      public static void main(String[] args)
      {
        System.out.println("这是你的第一个程序,欢迎你走入Java的大门");
      }
    }C:\Welcome>javac Welcome.javaC:\Welcome>java Welcome.class
    Exception in thread "main" java.lang.NoClassDefFoundError: Welcome/class
    去掉.class如下:
    C:\Welcome>javac Welcome.javaC:\Welcome>java Welcomejava会认为Welcom.class是class名,它会去Welcome.class.class文件找main,所以找不到的,
    把.class去掉就可以运行了
      

  27.   

    谢谢各位!
    问题终于解决,是classpath配置问题,改成CLASSPATH=.;C:\jdk1.4\lib\tools.jar就可以了。
      

  28.   

    楼主:如果还没有解答的话,你再检查一下,你的 .java 文件名的大小写与你的类名 hello 一致。会不会不小心写成了“Hello.java”或者“HELLO.JAVA”,这样也是不能运行的。
      

  29.   

    可能是环境配置问题:Path路径
    JDK将Path 路径提到最前。
    因为,Oracle 也有一个JDK,两个版本的JDK不一。