我有一个非常简单的 web 应用程序,用于在 java 中进行试验。我定义了以下java类:
UtilDate.java http://www.philbair.org/samples/UtilDate_java.jpg
和一个JSP文件如下:
UtilDate.java http://www.philbair.org/samples/getdate_jsp.jpg
tomcat 文件夹/文件如下所示(这不是官方语法,只是文件夹结构的抽象表示):
UtilDate.java http://www.philbair.org/samples/tree.jpg
mywebapp/WEB-INF/classes/com/udate/UtilDate.class
jsp文件在根目录'mywebapp'下(名字无关紧要),所有这些都在tomcat的webapps文件夹下。
编译这个 java 类 (UtilDate.java) 后,我重新启动 tomcat 以确保它没有挂在任何旧的缓存内容上。
我得到以下...
javax.servlet.ServletException: java.lang.NoClassDefFoundError: UtilDate
当我尝试将 jsp 页面放入浏览器时。
如果我将uDate()
jsp文件的打印语句中的方法替换为
out.print("hello");
我在浏览器输出中得到了 hello 这个词。
这是用于测试简单 Web 应用程序的粗略代码。我不是在寻找关于最佳实践的建议(尽管从我在这个网站上看到的内容来看,这个建议非常好),我只是想知道为什么这不起作用。它工作过一次,在重新编译类后,它停止工作。我可以在我的命令行上运行这个类,它工作得很好(输出日期与 main 方法一样)。
我正在运行 Windows 7 和 tomcat 7.0.34。目前我没有使用 eclipse 或 netbeans 等。我正在使用一个简单的文本编辑器,使用命令行编译 java 类,javac
手动创建 web 文件夹,并将所有文件放在它们所属的位置,而不是让 maven 或 ant 或其他任何东西为我构建它。暂时没有战争档案。只需使用 webapps 下的 tomcat 文件夹中的文件即可。我知道有更复杂和推荐的方法可以做到这一点,但这只是对我自己理解的测试,没有任何东西可以保护我免受正在发生的事情的影响。
同样,这工作了一次。
提前感谢您的帮助。