我初学,有些基本的概念理解不了。比如java package打包的问题,最近很受困扰。
我先说下我的思路,先写一个第三方库,导出到Jar,类似于编写的JAVA连接MYSQL那样的库能够被JSP调用(这个词也不知道合适不),index.jsp 引入package,但总会提示找不到包。我的包已经放在了Tomcat/common/lib下,引入第三方库的时候没有问题,但是自己写的就有问题。
1.这个是package dbPool/dbPool.class,用ECLIPSE 导出JAR后,没有选择入口类(不知道是不是这个受到了影响)
package dbPool;
public class dbPool {
public void test() {
System.out.print("this is datapool");
}
}
2.下面是index.jsp的文件内容,总是提示找不到package,
<%@page contentType="text/html; charset=GBK"%>
<%@page import="java.util.*" %>
<%@page import="dbPool.dbPool" %>
<%
out.print("Today is "+new java.util.Date());
dbPool tmp = new dbPool();
tmp.test();
%>
3.下面是异常
org.apache.jasper.JasperException: Unable to compile class for JSP
Generated servlet error:
C:\WATMServer\Tomcat5\work\Catalina\localhost\_\org\apache\jsp\index_jsp.java:9: package dbPool does not exist
import dbPool.*;
^
An error occurred at line: 7 in the jsp file: /index.jsp
Generated servlet error:
C:\WATMServer\Tomcat5\work\Catalina\localhost\_\org\apache\jsp\index_jsp.java:55: cannot find symbol
symbol : class dbPool
location: class org.apache.jsp.index_jsp
dbPool tmp = new dbPool();
^
An error occurred at line: 7 in the jsp file: /index.jsp
Generated servlet error:
C:\WATMServer\Tomcat5\work\Catalina\localhost\_\org\apache\jsp\index_jsp.java:55: cannot find symbol
symbol : class dbPool
location: class org.apache.jsp.index_jsp
dbPool tmp = new dbPool();
^
3 errors
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:84)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:332)
org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:412)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:472)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:451)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:439)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:511)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:295)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
package com.a.b;//注意包的路径
Class Hello{
.....
}
如果你想把Hello这个类导出jar包,那么首先需要编译好的类文件 Hello.class
然后用cmd命令就可以打jar包。 比如现在Hello.class在c盘根目录
打开cmd 进入c盘根目录:
jar cvf hello.jar Hello.class
如果命令是这么写的,那么你在项目中引用该jar包的时候会仍然引用不到。
这时候应该建一个跟该类包路径一样的路径,即在c盘下新建a文件夹,再在a里建b文件夹,然后把Hello.class放到b文件夹里。
然后cmd命令这样写:
jar cvf hello.jar a/b/Hello.class
这样打出的jar包就可以正常使用了。