IllegalAccessError

Estou criando um Servlet que grava no banco Oracle 10g Express Edition dados geográficos. Tenho um classe que faz o serviço de escrever no banco os dados e ela funcionava muito bem localmente (Sem o tomcat). Agora estou chamando esta classe por dentro de um servlet e agora ela lança essa Exceçao. Alguem ja teve esse problema ? Estou precisando de ajuda urgente pq estou muito atrasado com este projeto.

O erro

GRAVE: Servlet.service() for servlet SaveInf threw exception java.lang.IllegalAccessError: tried to access method oracle.sql.CharacterSet.stringToAL32UTF8(Ljava/lang/String;)[B from class oracle.jdbc.driver.DBConversion at oracle.jdbc.driver.DBConversion.stringToDriverCharBytes(DBConversion.java:434) at oracle.jdbc.driver.DBConversion.StringToCharBytes(DBConversion.java:492) at oracle.jdbc.driver.T4CTTIoauthenticate.<init>(T4CTTIoauthenticate.java:177) at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:352) at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:414) at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165) at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35) at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at org.geopublishing.Shp2SdoJava.ShapefileToJGeomFeature.inserir(ShapefileToJGeomFeature.java:143) at org.geopublishing.Shp2SdoJava.SaveInf.doGet(SaveInf.java:31) at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at java.lang.Thread.run(Unknown Source)
o codigo do servlet

package org.geopublishing.Shp2SdoJava;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import oracle.sql.CharacterSet;

public class SaveInf extends HttpServlet {

	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {

		ShapefileToJGeomFeature up;
		try {
			up = new ShapefileToJGeomFeature(request.getParameter("user"),
					request.getParameter("pwr"),
					request.getParameter("tabela"), "nyc_roads",
					request.getParameter("srid"),
					request.getParameter("minxx"),
					request.getParameter("maxx"), request.getParameter("miny"),
					request.getParameter("maxy"), request.getParameter("tlc"),
					"");
			     up.inserir();
		} catch (Exception e) {

			e.printStackTrace();
		}

	}

}

Desde ja agradesço a atençao

Esse erro é bem bizarro e pelo que eu li por aí, isso é só um chute tá?
O jar com o driver do Oracle está dentro da sua aplicação (na pasta WEB-INF/lib) ou em alguma outra pasta - como nas pastas de extensão da JVM ou do Tomcat?
Se estiver fora do seu projeto, eu recomendo colocá-lo dentro porque pode estar dando um conflito de ClassLoaders.

Se isso que está sendo dito aqui não fizer o menor sentido para você, pode por favor colar o que está dentro do método inserir na linha 25 do código do seu servlet. É de lá que o erro está partindo.

Cara os jars ja estao nesses locais aqui esta o meu codigo que inseri

try { DriverManager.registerDriver(new OracleDriver()); conn = (OracleConnection) DriverManager.getConnection(url, m_user, m_password); conn.setAutoCommit(false); } catch (Exception e) { e.printStackTrace(); }
A exceçao é lançada na linha onde faço cast de Para oracleConncetion .
Isso funcionava normalmente e agora parou sera que usando outro servidor tipo JBoss Resolveria ?

Achei esse post num forum da Oracle e me parece que é o seu problema.
Thread: Problems of hibernate calling oracle stored procedure
Pelo que vi no seu código, está tratando diretamente com as classes do driver deles, dá uma olhada se está importando as classes do pacote oracle.jdbc e não as do oracle.jdbc.driver. Me parece que as classes deste segundo pacote estão depreciadas. Pelo que vi no seu stack trace, está chamando oracle.jdbc.driver.OracleDriver, veja se ao invés de importar esta classe, consegue importar a oracle.jdbc.OracleDriver, talvez isso resolva seu problema.
Abraço.

Cara nao resolveu

import java.util.HashMap; import oracle.spatial.util.*; import java.sql.*; import oracle.sql.STRUCT; import oracle.jdbc.OracleConnection; import oracle.spatial.geometry.JGeometry;

Esses sao os imports que eu coloco.Haveria alguma configuraçao a ser feita nas preferencias do eclipse ?

A exceção continua a mesma?

Respondendo as suas perguntas:
1 - Não acredito que mudar para o JBoss resolva alguma coisa. Já que o JBoss usa o Tomcat internamente.

2 - Não, não tem nenhuma configuração que você deve fazer no Eclipse. Teoricamente, se compilou, ele achou a classe.

Sim , a maldita exception continua sendo lançada.

cara conseguir resolver , li um topico aqui no guj e colei o ojdbc14 no diretorio jre/lib/ext