日期:2014-05-18  浏览次数:20768 次

JSP不能正常編譯
我的測試環境為tomcat6+jdk1.6
我新建一個虛擬主機地址為
http://abc.com:8088
在主機中文件目錄結構為
test.jsp
common
common/testdir/test.jsp
WEB-INF
WEB-INF\web.xml
WEB-INFO\classes
WEB-INFO\classes\mypk\db\MsSQLClass
MsSQLClass為我自定義的一個類
根目錄中的test.jsp文件內容為
<%@page import="mypk.db.MsSQLClass"%>
同時common/testdir/test.jsp中的內容一樣

但編譯結果確不同,根目錄中的tets.jsp編譯無錯,
但common/testdir/test.jsp則編譯不能過,報錯如下:
org.apache.jasper.JasperException: Unable to compile class for JSP:

An error occurred at line: 6 in the generated java file
Only a type can be imported. mypk.db.MsSQLClass resolves to a package

Stacktrace:
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:92)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330)
org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:423)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:308)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:286)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:273)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:566)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
調了一整天,GOOGLE都被搜完了,還措出個解決方法來.




------解决方案--------------------
mypk.db.MsSQLClass resolves to a package 
好像是类文件编译后放的位置有问题

------解决方案--------------------
但是我將JSP文件放在根目錄下就沒事,只是不能放在根目錄的下級目錄中.
------解决方案--------------------
jsp文件位置放错,导致不能找到类文件。类文件的位置是没有问题的。
------解决方案--------------------
把中间的db文件夹去掉,class文件直接放在mypk文件夹里,然后改为 <%@page import="mypk.MsSQLClass" %> 

------解决方案--------------------
包导入有问题,好像多了一个包
<%@page import="mypk.db.MsSQLClass.MsSQLClass" %> 
试试
我的异常网推荐解决方案:org.apache.jasper.JasperException: Unable to compile class,http://www.aiyiweb.com/j2ee/2308.html