现在在编译Postgis文档中,java client部分代码,修改了下无法在jsp+tomcat6.0+jdk1.5的环境下编译通过。
Postgresq驱动是postgresql-8.2-506.jdbc3.jar Postgis驱动是postgis-1.3.3.jar
本人代码如下: String str="";
String url="jdbc:postgresql://localhost:5432/hz";
String user="abcde";
String pwd="123456";
java.sql.Connection conn;
Statement stmt=null;
ResultSet rs=null;
try{
Class.forName("org.postgresql.Driver").newInstance();
conn=DriverManager.getConnection(url,user,pwd);
((org.postgresql.jdbc3.Jdbc3Connection)conn).addDataType("box3d","org.postgis.PGbox3d");
((org.postgresql.jdbc3.Jdbc3Connection)conn).addDataType("the_geom","org.postgis.PGgeometry");
stmt=conn.createStatement();
}catch(Exception e){
System.err.println("Driver:"+e.getMessage());
}
String sql="";
str="select asText(geom) as geom from hzpb where name='2'";
ResultSet rs1=stmt.executeQuery(str);
while(rs1.next())
{
PGgeometry geom=(PGgeometry)rs1.getObject(1);
out.println(geom.toString());
}
Tomcat 报错如下:
org.apache.jasper.JasperException: An exception occurred processing JSP page /WebRoot/1.jsp at line 2219:
20: while(rs1.next())
21: {
22: PGgeometry geom=(PGgeometry)rs1.getObject(1);
23:
24: out.println(geom.toString());
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:505)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:416)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause java.lang.ClassCastException: java.lang.String
org.apache.jsp.WebRoot._1_jsp._jspService(_1_jsp.java:139)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
Postgresq驱动是postgresql-8.2-506.jdbc3.jar Postgis驱动是postgis-1.3.3.jar
本人代码如下: String str="";
String url="jdbc:postgresql://localhost:5432/hz";
String user="abcde";
String pwd="123456";
java.sql.Connection conn;
Statement stmt=null;
ResultSet rs=null;
try{
Class.forName("org.postgresql.Driver").newInstance();
conn=DriverManager.getConnection(url,user,pwd);
((org.postgresql.jdbc3.Jdbc3Connection)conn).addDataType("box3d","org.postgis.PGbox3d");
((org.postgresql.jdbc3.Jdbc3Connection)conn).addDataType("the_geom","org.postgis.PGgeometry");
stmt=conn.createStatement();
}catch(Exception e){
System.err.println("Driver:"+e.getMessage());
}
String sql="";
str="select asText(geom) as geom from hzpb where name='2'";
ResultSet rs1=stmt.executeQuery(str);
while(rs1.next())
{
PGgeometry geom=(PGgeometry)rs1.getObject(1);
out.println(geom.toString());
}
Tomcat 报错如下:
org.apache.jasper.JasperException: An exception occurred processing JSP page /WebRoot/1.jsp at line 2219:
20: while(rs1.next())
21: {
22: PGgeometry geom=(PGgeometry)rs1.getObject(1);
23:
24: out.println(geom.toString());
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:505)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:416)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause java.lang.ClassCastException: java.lang.String
org.apache.jsp.WebRoot._1_jsp._jspService(_1_jsp.java:139)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
java.lang.*; import org.postgis.*;
public class JavaGIS {
public static void main(String[] args)
{ java.sql.Connection conn;
try
{ /* * Load the
JDBC driver and establish a connection. */
Class.forName("org.postgresql.Driver");
String url ="jdbc:postgresql://localhost:5432/database";
conn =DriverManager.getConnection(url, "postgres", "");
/* *Add the geometry types to the connection. Note that you * must cast the
connection to the pgsql-specific connection * implementation before
calling the addDataType() method.
*/
((org.postgresql.Connection)conn).addDataType("geometry","org.postgis.PGgeometry");
((org.postgresql.Connection)conn).addDataType("box3d","org.postgis.PGbox3d");
/* * Create a statement and execute a select query. */
Statement s =conn.createStatement();
ResultSet r = s.executeQuery("select AsText(geom) as geom,id from geomtable");
while( r.next() )
{
/* *Retrieve the geometry as an object then cast it to the geometry type. * Print things out. */
PGgeometry geom = (PGgeometry)r.getObject(1);
int id = r.getInt(2);
System.out.println("Row " + id + ":");
System.out.println(geom.toString()); }
s.close(); conn.close(); }
catch(Exception e )
{
e.printStackTrace();
}
}
}这个是postgis上的例子。
org.apache.jasper.JasperException: An exception occurred processing JSP page /WebRoot/1.jsp at line 22
你的1.jsp就是你贴出来的例子吗?
改成org.postgresq.PGconnection就可以通过。
不知道为什么,是文档太久没更新呢,还是postgis更新太快了。