Java 获取错误消息";只能导入类型…“;尝试执行jsp页面时
我有一个jsp页面,试图引用一些用户定义的类。这些类使用以下行进行编译:Java 获取错误消息";只能导入类型…“;尝试执行jsp页面时,java,jsp,Java,Jsp,我有一个jsp页面,试图引用一些用户定义的类。这些类使用以下行进行编译: package pikefin; 并将其放入目录中: /var/lib/tomcat6/webapps/examples/jsp/JSPEssbase2/WebContent/WEB-INF/classes/pikefin 以下是我的jsp代码: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF
package pikefin;
并将其放入目录中:
/var/lib/tomcat6/webapps/examples/jsp/JSPEssbase2/WebContent/WEB-INF/classes/pikefin
以下是我的jsp代码:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="pikefin.PopulateSpreadsheet" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
out.println(" Hello Oracle World5");
PopulateSpreadsheet tmp = new PopulateSpreadsheet();
out.println(" Hello Oracle World4"); %>
</body>
</html>
更新1:
因此,我将导入语句更改为:
并创建了一个新的目录结构,如下所示:
[ollie@devdataload jsp]$ ls -Rp JSPEssbase3/
JSPEssbase3/:
essbasedatasource.jsp META-INF/ WEB-INF/
JSPEssbase3/META-INF:
MANIFEST.MF
JSPEssbase3/WEB-INF:
classes/ lib/
JSPEssbase3/WEB-INF/classes:
pikefin/
JSPEssbase3/WEB-INF/classes/pikefin:
BatchSample$CellAddress.class Logs.class
BatchSample.class PopulateSpreadsheet.class
CustomBufferedWriter.class SkipLoadException.class
DBFunctions.class TestException.class
EssbaseConnect.class UtilityFunctions.class
JSPEssbase3/WEB-INF/lib:
现在我得到了这个错误消息:
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
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. pikefin.PopulateSpreadsheet resolves to a package
An error occurred at line: 13 in the jsp file: /jsp/JSPEssbase2/essbasedatasource.jsp
PopulateSpreadsheet cannot be resolved to a type
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: Unable to compile class for JSP:
An error occurred at line: 13 in the jsp file: /jsp/JSPEssbase3/essbasedatasource.jsp
PopulateSpreadsheet cannot be resolved to a type
10: <body>
11: <%
12: out.println(" Hello Oracle World5");
13: PopulateSpreadsheet tmp = new PopulateSpreadsheet();
14:
15: out.println(" Hello Oracle World4"); %>
16: </body>
类型异常报告
消息
说明服务器遇到内部错误(),无法完成此请求。
例外
org.apache.jasper.jaspereException:无法为JSP编译类:
jsp文件:/jsp/JSPEssbase3/essbasedatasource.jsp的第13行出现错误
无法将PopulateSpreadsheet解析为类型
10:
11:
16:
路径
/var/lib/tomcat6/webapps/examples/jsp/JSPEssbase2/WebContent/WEB-INF/classes/pikefin
应该是
/var/lib/tomcat6/webapps/examples/WEB-INF/classes/pikefin
WEB-INF
必须直接进入webapp项目文件夹。路径
/var/lib/tomcat6/webapps/examples/jsp/JSPEssbase2/WebContent/WEB-INF/classes/pikefin
应该是
/var/lib/tomcat6/webapps/examples/WEB-INF/classes/pikefin
WEB-INF
必须直接进入webapp项目文件夹。您需要将其设置为pikefin.PopulateSpreadsheet.*或类似文件,如果您有,则错误是正确的
Only a type can be imported. pikefin.PopulateSpreadsheet resolves to a package
您需要将其设置为pikefin.PopulateSpreadsheet.*或类似的格式,因为您的错误是正确的
Only a type can be imported. pikefin.PopulateSpreadsheet resolves to a package
我在项目中使用eclipse时遇到了同样的问题。我通过将java代码的输出文件夹更改为
“..\WEB-INF\classes”
解决了这个问题。我在项目中使用eclipse时遇到了同样的问题。我通过将java代码的输出文件夹更改为“..\WEB-INF\classes”
解决了这个问题。另外,一些类打包在jar文件中,充当zip文件,因此必须提取,否则将找不到它们。这发生在我身上的是chemistry-opencmis-osgi-client-0.7.0.jar
。在本例中,jsp无法定位所需的导入,这是因为在jar文件中有一个名为lib的子目录,其中包含我所需的实际jar。在我看来,如果把它们打包成zip或tar.gz,而不是jar,那就更好了
其余的都是正确的,只要这些jar文件放在
WEB-INF/lib
中,它们就可以顺利导入。作为补充说明,一些类打包在jar文件中,充当zip文件,因此必须提取,否则将找不到它们。这发生在我身上的是chemistry-opencmis-osgi-client-0.7.0.jar
。在本例中,jsp无法定位所需的导入,这是因为在jar文件中有一个名为lib的子目录,其中包含我所需的实际jar。在我看来,如果把它们打包成zip或tar.gz,而不是jar,那就更好了
其余的都是正确的,只要将这些jar文件放入
WEB-INF/lib
中,它们就可以顺利导入。这个JSP编译错误实际上有点误导。它隐藏着一个NoClassDefFoundError
。这个JSP编译错误实际上有点误导。这是一个NoClassDefFoundError
。如果您使用OSGI和Felix,请确保您的捆绑包已经启动,并且所有需要的包都已导出。如果您使用OSGI和Felix,请确保您的捆绑包已经启动,并且所有需要的包都已导出。