有一事不明白,我刚才编译成功这个class文件后能成功运行,但一关了DOS窗口重新打开并运行此命令就不行了,出现如下错误:
C:\j2sdk1.4.2>java c:\jsp\WEB-INF\classes\HelloWorld
Exception in thread "main" java.lang.NoClassDefFoundError: c:\jsp\WEB-INF\classe
s\HelloWorld
这是什么意思?是路径的原因吗?刚才明明能正确显示的,现在却不行了,记得以前看过一篇文章说这是路径的原因,哪位再给详细指点一下。

解决方案 »

  1.   

    bean的路径一定要放置好,不然试运行不了的,不同jsp解析器有不同的放置位置!
      

  2.   

    你的HelloWorld中定义了package的吧?
      

  3.   

    javaBean代码如下:
    package jsp;
    public class HelloWorldd {
    public String name = "My first bean";
    public String getHi()
    {
    return "Hello from " + name;
    }
    }
    这是照抄别人的,我只不过改了下路径及类名,编译应该成功了,已在同目录下生成了HelloWorldd.class,但运行时不行,什么原因呢?刚编译完时能成功运行,但关了DOS窗口再次运行就不行了,而我放在j2sdk1.4.2目录中的class文件就能正常运行,这个class文件是放在c:\jsp目录下的。我的语句并没有错啊(package jsp;),虚拟目录就叫jsp,没错吧,不明白哪里出错,请各位再指教一下。
      

  4.   

    从你用的运行指令,就可以看出你的path和classpath都没设置好
    或者是你自己没有去利用它们
    path="%path%;C:\j2sdk1.4.2\bin"
    classpath=".;C:\j2sdk1.4.2\lib\dt.jar;C:\j2sdk1.4.2\lib\tools.jar;D;\MyJava"
                                                                     ^^^^^^^^^^^
    classpath中的D:\MyJava可以为任意的文件夹,用来存放你自己写的java类的都设置好了后,把你编译好的class(包括bean)都放到D:\MyJava\下
    如果class中定义了package(例如bean调用都要用package的--tomcat下)
    则把class放到D:\MyJava\packageName\下然后你到任意一个目录下,比如C:\
    敲入java jsp.HelloWorld(jsp为packageName,HelloWorld为className),回车
    Ok了吗?
      

  5.   

    我看到过你的那段程序,还是一位网友的问题
    :)
    不过那个叫HelloWorld的Bean(哦,你写成了HelloWorldd)因为没有定义main方法
    所以不能用直接java指令运行
    得通过jsp调用才行
      

  6.   

    一般放在虚拟目录----->WEB-INF文件夹---->classes文件夹下面
      

  7.   

    class HelloWorldd 只需编译就行了,它会生成HelloWorldd.class文件,然后将此文件放到classes文件夹下的包下面.
      

  8.   

    zcjl说要通过jsp调用才行,但我在提问中已写出了调用的代码,但运行时提示第六行错误,我不明白哪里出错,大家在本机运行一下好吗?代码已经全部写出来了,方便的话在本机测试一下如何。另外,zcjl所写的classpath路径和我的设置基本一样,我是这样设置的:
    .;C:\j2sdk1.4.2\lib\tools.jar;C;\j2sdk1.4.2\lib\dt.jar;C;\j2sdk1.4.2\lib\mm.mysql-2.0.4-bin;
    但D;\MyJava这个没写,我没定义放置类的目录,因为现在暂时没打算将全部的类都放在一块,所以就没写。如果class中定义了package(例如bean调用都要用package的--tomcat下)
    则把class放到D:\MyJava\packageName\下,这句话的意思对照我的情况是不是我应该在D:\MyJava\下建立jsp目录,我的理解对不对呢?
      

  9.   

    我是将HelloWorld.java和HelloWorld.class都放在虚拟目录----->WEB-INF文件夹---->classes文件夹下面了,但运行时还是错误。
      

  10.   

    理解完全正确你的jsp之所以会出错,是因为你在bean中些类名写成了HelloWorldd(多了个d,看到了吗?)另:我觉得在classpath中加入C;\j2sdk1.4.2\lib\mm.mysql-2.0.4-bin好像没有意义(个人意见哈,也许是我自己没发现其中的奥妙)还有就是,如果是初学者的话,建议还是将自己写的class和第三方提供的class分开来,这样自己查错方便,以后要积累经验的话,这可是你的宝库啊
      

  11.   

    输入java HelloWorld就出现如下错误:
    C:\j2sdk1.4.2>java HelloWorldd
    Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorldd
    还是不行,class文件都生成了,看来是路径的问题,怎么做才正确呀!
      

  12.   

    另,用jsp调用你的class也得放到packageName目录下啊
    比如\WEB-INF\classes\jsp\下
      

  13.   

    麻烦你回上去看看我给你的另一段回复
    ok?自己的帖子可要看仔细嘛^_^
    你的错误是没有定义main方法
      

  14.   

    理解完全正确你的jsp之所以会出错,是因为你在bean中些类名写成了HelloWorldd(多了个d,看到了吗?)
    我说明一下,我写的并没错,因为我在j2sdk1.4.2目录下有一个HelloWorld.class,代码和这个不一样的,但那个没用package jsp;语句,那个运行完全正常,我只是将这个改了一下(即后面加了一个d),生成的类也叫HelloWorldd.class。另:我觉得在classpath中加入C;\j2sdk1.4.2\lib\mm.mysql-2.0.4-bin好像没有意义(个人意见哈,也许是我自己没发现其中的奥妙,这是JDBC驱动程序的路径,必须要加上,否则无法连接数据库。我运行java jsp.HelloWorldd也没用,还是一样的错误,大家再给指点一下如何?
      

  15.   

    你的错误是没有定义main方法,是的,这个代码中并没有定义main方法,而我另外那个javaBean源文件就定义了mani方法,所以我怀疑代码有错,这代码并不是我写的,而是我从网上看到照抄测试的,正确的答案是什么?
      

  16.   

    zcjl,如何你方便的话,在本机上测试一下如何?在你那儿能不能通过,如果再不能通过,我觉得可能是代码的问题了。
      

  17.   

    正确的答案是://test.jsp
    <html>
    <head>
    <title>JavaBean 试验</title>
    </head>
    <body> 
    <jsp:useBean id="helloBean" scope="session" class="jsp.HelloWorld" />
    <%= helloBean.getHi() %>
    <hr>
    <%
    helloBean.name = "JSP";
    out.print(helloBean.getHi());
    %>
    </body>
    </html>//HelloWorld.javapackage jsp;public class HelloWorld {
    public String name = "My first bean";
    public String getHi()
    {
    return "Hello from " + name;
    }
    }把HelloWorld.java编译后的class放到\WEB-INF\classes\jsp\下
    启动tomcat
    在浏览器中输入你的jsp所在的地址(千万别说这个你也不清楚哈)
    然后就看结果了
      

  18.   

    另外给你附加一个可以用java指令运行的HelloWorld//HelloWorld.javapackage jsp;public class HelloWorld {
    public static void main(String[] args) {
    System.out.println("HelloWorld");
    }
    }把编译后的class放到已被设为classpath的文件夹中
    如D:\MyJava\jsp\下(jsp为packageName)
    输入java jsp.HelloWorld
    看结果去吧
    呵呵
      

  19.   

    zcjl,如何你方便的话,在本机上测试一下如何?在你那儿能不能通过,如果再不能通过,我觉得可能是代码的问题了。
    我肯定先试过了的啊
    完全正确
      

  20.   

    我按照zcjl的方法编译了HelloWorld.class并放在\WEB-INF\classes\jsp\下,运行jsp文件,ok,成功了,多谢zcjl的指教,谢谢。但有一点让人晕倒,显示这个网页硬盘足足狂转了四分钟,读盘读得快发疯了,头都听大了,怎么会这么慢,你那儿也一样的吗?虽说第一次都慢一点,但也不会是这样慢吧,人都快晕过去了,就同死机了一样,不明白,能再指点其中缘由吗?
      

  21.   

    运行是显示如下文字的,好象不对:
    Hello from JSP 
    --------------------------------------------------------------------------------
    Hello from JSP 
    显示这个对吗?
      

  22.   

    我的机子中了病毒,我得专心处理一下
    另:好像你的显示结果不正确,不过还是先检查一下你的bean文件吧
    顺便恭喜你调试成功