JSP页面中嵌入代码,编译报错!!!!

yeqing4562011 2012-04-09 11:42:17

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<%@ page import="com.alipay.services.*"%>
<%@ page import="com.alipay.util.*"%>
<%@ page import="java.util.HashMap"%>
<%@ page import="java.util.Map"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP 'MyJsp.jsp' starting page</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<%
String test = "";
TestJava.getTestString();
%>


</head>

<body>

</body>
</html>

JSP页面代码。

<%@ page import="com.alipay.util.*"%>这已经引入 TestJava这个类了。
package com.alipay.util;

public class TestJava {

public static String getTestString() {
return "TestString";
}

}


报错信息:
org.apache.jasper.JasperException: Unable to compile class for JSP:

An error occurred at line: 34 in the jsp file: /MyJsp.jsp
TestJava cannot be resolved
31: <body>
32: <%
33: String test = "";
34: TestJava.getTestString();
35: %>
36: </body>
37: </html>


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:439)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:356)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:334)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:321)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:592)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)



请教~~~
...全文
676 37 打赏 收藏 转发到动态 举报
写回复
用AI写文章
37 条回复
切换为时间正序
请发表友善的回复…
发表回复
X497347200 2012-04-09
  • 打赏
  • 举报
回复
现在的问题是 为什么 类名.静态方法 要报错
X497347200 2012-04-09
  • 打赏
  • 举报
回复
你到服务器 有个 work 文件夹里面去看看这个jsp生成的 .java文件中有啥问题
zilin110 2012-04-09
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

<%@ page import="com.alipay.services.*"%>
<%@ page import="com.alipay.util.*"%>
<%@ page import="java.util.HashMap"%>
<%@ page import="java.util.Map"%>

把這些放在第一行吧,如果可以,嘗試看下jsp翻譯后的java文件,或許能看出什麽來……
[/Quote]

这个没关系吧.我就没在第一行放.
zilin110 2012-04-09
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

<body>
<%
Test.getTestString();
System.out.println(Test.getTestString());
%>
</body>
这样
[/Quote]
我试过了.可以用
dracularking 2012-04-09
  • 打赏
  • 举报
回复
<%@ page import="com.alipay.services.*"%>
<%@ page import="com.alipay.util.*"%>
<%@ page import="java.util.HashMap"%>
<%@ page import="java.util.Map"%>

把這些放在第一行吧,如果可以,嘗試看下jsp翻譯后的java文件,或許能看出什麽來。
宏Lee 2012-04-09
  • 打赏
  • 举报
回复
<%
String test = "";
TestJava.getTestString();
%>
这个应该写在body里面吧
zilin110 2012-04-09
  • 打赏
  • 举报
回复
<body>
<%
Test.getTestString();
System.out.println(Test.getTestString());
%>
</body>
这样
javamyself 2012-04-09
  • 打赏
  • 举报
回复
实例化问题
yeqing4562011 2012-04-09
  • 打赏
  • 举报
回复
我说哥们!! 这不是java语义的问题吧~
yeqing4562011 2012-04-09
  • 打赏
  • 举报
回复
jsp页面嵌入代码, 引入类。 可是不能操作类的静态方法???? 不知道 怎么回事 没这么写过 ,可是按理说应该没有什么错误啊
充电中 2012-04-09
  • 打赏
  • 举报
回复
<%
TestJava tj = new TestJava();
String a =tj.getTestString();
%>
<%=a%>
声明一下
yeqing4562011 2012-04-09
  • 打赏
  • 举报
回复

[Quote=引用 2 楼 的回复:]

你前面设一个 String a =TestJava.getTestString(); 应该就没问题了。。
[/Quote]

你这不扯淡吗。。。 不行
充电中 2012-04-09
  • 打赏
  • 举报
回复
你前面设一个 String a =TestJava.getTestString(); 应该就没问题了。。
yeqing4562011 2012-04-09
  • 打赏
  • 举报
回复
请教~~~~
yeqing4562011 2012-04-09
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 的回复:]

看看TestJava的class文件有沒有生成了
還可以測試下去掉jsp文件中的TestJava,看看能不能正常編譯,如果可以,說明其它import都能正常工作,只關乎你TestJava的import了
[/Quote]

最初测试TestJava是拿另一个项目里的jsp实验的。。 搞的以为正确了。。。 大意了。。。
yeqing4562011 2012-04-09
  • 打赏
  • 举报
回复
其实大家想想,既然JSP页面没有问题。 那就是说明class文件没有找到的问题。
咱们都被表面所迷惑了。没有想到这一次。
web项目的发布,src的javaclass文件都会在webRoot/WEB-INF/classes下
classpath中 有output.... 我导入的是支付宝即时结报的测试项目。so出现问题。。。

废话不说,放分一人10分~~~
nmyangym 2012-04-09
  • 打赏
  • 举报
回复
我试没有问题.
javamyself 2012-04-09
  • 打赏
  • 举报
回复
[Quote=引用 33 楼 的回复:]
引用 31 楼 的回复:

引用 22 楼 的回复:
引用 21 楼 的回复:

引用 18 楼 的回复:
package org.apache.jsp;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
import com.alipay.util.*;

……
[/Quote]
您真是牛逼哄哄啊。
yeqing4562011 2012-04-09
  • 打赏
  • 举报
回复
[Quote=引用 31 楼 的回复:]

引用 22 楼 的回复:
引用 21 楼 的回复:

引用 18 楼 的回复:
package org.apache.jsp;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
import com.alipay.util.*;

public final c……
[/Quote]
傻逼 不解释
yeqing4562011 2012-04-09
  • 打赏
  • 举报
回复
所有的门楼们~~~~ 找出错误原因了~~~
org.apache.jasper.JasperException: Unable to compile class for JSP:

An error occurred at line: 31 in the jsp file: /MyJsp.jsp
TestJava cannot be resolved
28: <body>
29: <%
30:
31: TestJava.getTestString();
32: %>
33: </body>
34: </html>

这种错误呢,首先分析是因为。类没有引入的原因。 跟楼上那些脑子有问题的人来说,不是什么语义啊什么问题。
所看JSP页面文件引入方式,没有错误。
为什么静态方法就出问题了呢。 静态方法调用和对象调用方法我刚才试了一下。对象调用方法的提示的更明确。cannot be resolved to a type

原来的分析都有误区,一直以为都是JSP写的问题。可是都没想到,页面没问题,是不是就没有找到class文件,java执行的都是编译后的class文件。
后来我看下来下。。。。 我把支付宝的即时结报测试项目导入后不是web项目,classpath的编译地址,不是项目中webRoot/WEB0-INF/classes文件夹里。so就出现了这个问题。

唉。。。 也是大意之间浪费了时间。 其实有时候我们想问题就应该从根想起。 只是被表面所迷惑了~~
废话不多说了。 放分100分,说的差不多的一人10分~~~
加载更多回复(16)

81,094

社区成员

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

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