当前位置: 代码迷 >> Java Web开发 >> 关于自己编写类导出JAR包裹不能使用的有关问题
  详细解决方案

关于自己编写类导出JAR包裹不能使用的有关问题

热度:1478   发布时间:2013-02-25 21:04:36.0
关于自己编写类导出JAR包裹不能使用的问题
我初学,有些基本的概念理解不了。比如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)



找不到应该就是路径的问题。 比如你在项目中有一个Hello类
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包就可以正常使用了。
  相关解决方案