为什么找不到类?在线等待。

study_body 2002-10-21 09:38:00
我用Jsp做了一个非常简单的页面,如下:
<%@ page language="java" import="java.sql.*" %>
<%
try
{
Class.forName("DBCon.class");
DBCon con;
out.println("no error");
}
catch(Exception e)
{
System.out.println("error");
out.println("error");
}
%>
可是为什么Jsp引擎提示我找不到类DBCon呢?
我已经将DBCon编译过了。并且放置过很多地方,包含放在Java_home\lib中,为什么?
...全文
105 35 打赏 收藏 转发到动态 举报
写回复
用AI写文章
35 条回复
切换为时间正序
请发表友善的回复…
发表回复
study_body 2002-10-21
  • 打赏
  • 举报
回复
to: Anubis(为朋友两肋插刀,为MM插朋友两刀!!)
我按照你的说法做了,可是还是不行,错误如下:
type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: /jsp/valid.jsp(0,49) jsp.error.attribute.noequal
at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:94)
at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:417)
at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:126)
at org.apache.jasper.compiler.Parser.parseAttribute(Parser.java:169)
at org.apache.jasper.compiler.Parser.parseAttributes(Parser.java:136)
at org.apache.jasper.compiler.Parser.parseAttributes(Parser.java:149)
at org.apache.jasper.compiler.ParserController.figureOutJspDocument(ParserController.java:254)
at org.apache.jasper.compiler.ParserController.parse(ParserController.java:173)
at org.apache.jasper.compiler.ParserController.parse(ParserController.java:153)
at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:219)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:323)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:474)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:184)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:289)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:240)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:471)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2396)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:405)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:380)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:508)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:533)
at java.lang.Thread.run(Thread.java:536)

好象类找到了,但是就是有错误。
season_fly 2002-10-21
  • 打赏
  • 举报
回复
楼上说的对,就是这么放,你帖的那个应该是别的错误了
study_body 2002-10-21
  • 打赏
  • 举报
回复
to:season_fly(一望无际的鸟) 好象方法还是不灵,真是奇怪了。
Anubis 2002-10-21
  • 打赏
  • 举报
回复
哦!终于把你说的整个的看完了,我爱明白你是什么意思,我觉得作为初学者来说你最好把你所写的东西放在tomcat里的tomcat\webapps\examples下面,这样tomcat自动加栽的东西很容易确认,并且一般是没有错误的,把你的JSP放在C:\JBuilder6\tomcat\webapps\examples\jsp下,把你的类放在C:\JBuilder6\tomcat\webapps\examples\WEB-INF\classes下,其他的就看你的程序了,运行的时候启动tomcat服务器,然后是IE:http://localhost:8080/examples/XXX
其中XXX为你的JSP名......
这样就可以了!其他的服务器也是差不多的.........不知道说的对不对!大家一起看看........
study_body 2002-10-21
  • 打赏
  • 举报
回复
还是不行,有错误,不过好象同前面的错误不一样,下面我将错误代码帖出来吧:
type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: /valid.jsp(0,49) jsp.error.attribute.noequal
at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:94)
at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:417)
at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:126)
at org.apache.jasper.compiler.Parser.parseAttribute(Parser.java:169)
at org.apache.jasper.compiler.Parser.parseAttributes(Parser.java:136)
at org.apache.jasper.compiler.Parser.parseAttributes(Parser.java:149)
at org.apache.jasper.compiler.ParserController.figureOutJspDocument(ParserController.java:254)
at org.apache.jasper.compiler.ParserController.parse(ParserController.java:173)
at org.apache.jasper.compiler.ParserController.parse(ParserController.java:153)
at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:219)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:323)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:474)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:184)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:289)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:240)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2396)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:405)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:380)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:508)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:533)
at java.lang.Thread.run(Thread.java:536)

season_fly 2002-10-21
  • 打赏
  • 举报
回复
test里最好也加上package EC;
season_fly 2002-10-21
  • 打赏
  • 举报
回复
tomcat我没用过,这样吧
你把test.class(光是.class不要.java)放到tomcat通常要求放到的路径,
classes/test.class,jsp中import的时候只从当前路径开始,
然后在jsp中<%@ page import="test"; %>
如果是classes/a/test.class
那对应的就是<%@ page import="a.test"; %>
study_body 2002-10-21
  • 打赏
  • 举报
回复
在说一下我建立Jsp文件的过程可能会对解决问题有帮助。我在tomcat\webapps下面建立一个EC目录,之后将我的Jsp文件放入该目录中,jsp文件的文件的名称为valid.jsp,而文件内容为
<%@ page language="java" import="java.sql.*" %>
<%
test t=new test();
%>
study_body 2002-10-21
  • 打赏
  • 举报
回复
我觉得不是重新启动的问题,应该说java程序能够找到类而jsp文件找不到应该是jsp环境的设置问题。无论我将test.java和test.class文件放到什么地方,都是找不到,我甚至将这两个文件放到了j2sdk\lib目录下面,仍然找不到。解释一下jdk中的Java包是可以找到的,如
<%@ page import="java.lang.*,java.sql.*" %>
没有任何问题。
season_fly 2002-10-21
  • 打赏
  • 举报
回复
应该不用设这两个,
加完classpath重启下机子试试
study_body 2002-10-21
  • 打赏
  • 举报
回复
多谢,我也觉得这个问题太简单了。我看了相当多的书,也就是纸上谈兵的那种类型。是不是应该设置一下catalina_home和jsper_home呢?
Anubis 2002-10-21
  • 打赏
  • 举报
回复
其实我觉得,这个问题有点....呵呵.
你的classpath好象没问题...............我再看看
study_body 2002-10-21
  • 打赏
  • 举报
回复
仍然不可以
study_body 2002-10-21
  • 打赏
  • 举报
回复
试过了
Anubis 2002-10-21
  • 打赏
  • 举报
回复
我给你的classpath试过了吗?
.;c:\j2sdk\jre\lib;c:\j2sdk\lib\dt.jar;c:\j2sdk\lib\tools.jar;c:\j2sdk\lib;c:\test
后面没有';'
study_body 2002-10-21
  • 打赏
  • 举报
回复
试过了,仍然不可以,我又做了一次测试,将test.java文件放入c:\test目录中
test.java文件结构如下:
public class test{
String getString()
{
return ("test");
}
}
之后我又编写了一个test_test.java文件,放在了与Jsp文件相同的目录中,就是
tomcat\webapps\ec目录。test_test.java文件结构如下:
public class test_test{
public static void main(String args[])
{
test t=new test();
System.out.println(t.getString());
}
}
之后编译运行test_test,没有任何问题,cmd窗口显示为"test",可是我在Jsp文件中加入test t=new test();则提示我不认识test类,也就是找不到类,具体错误如下:
C:\Tomcat\work\Standalone\localhost\EC\valid_jsp.java:63: cannot resolve symbol
symbol : class test
location: class org.apache.jsp.valid_jsp
test t=new test();
^
是不是与Tomcat的设置有关,如果有关,请教如何设置,目前tomcat中自己的例子能够正常运行。
xuw 2002-10-21
  • 打赏
  • 举报
回复
<%@ page import="webapps.EC.DBCon" %>
试一试吧
Anubis 2002-10-21
  • 打赏
  • 举报
回复
你把classpath里最后的';'去掉试试...........
study_body 2002-10-21
  • 打赏
  • 举报
回复
真的没有人知道吗?
study_body 2002-10-21
  • 打赏
  • 举报
回复
另外Tomcat将jsp文件编译成的Servlet放在了
Tomcat\work\Standalone\localhost\EC目录下面了。
我查看了我编辑的一个Jsp文件的Servlet第一行,显示如下:
package org.apache.jsp;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
import org.apache.jasper.runtime.*;
我找了整个计算机,没有发现有org\apache\jsp这个目录结构啊。
加载更多回复(15)

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧