Class.forName(...) - ClassNotFoundException!

17 respostas
blackout

Pessoal, estou tentando abrir uma conexão com o banco de dados Oracle.
Estou fazendo da seguinte maneira:

Solicito através de um servlet
try{
				//Através da interface ProjetoDAO, utilizando-se do factory para adiquirir 
				//uma instância de si mesma, o método incluir é chamado para persistir o objeto.
				DAOFactory factory = DAOFactory.getInstance();
				ProjetoDAO projetoDao = factory.getProjetoDAO();
				projetoDao.insert( projeto );
				
				req.setAttribute( "message", "Cadastro efetuado com sucesso!" );
			}
Na linha:
DAOFactory factory = DAOFactory.getInstance();
eu pego uma instancia para abrir a conexão.

Então internamente tenho:

Classe DAOFactory:
try
		{
			file = new File( PROPERTIES_FILE );
			properties = new Properties();
			in = new FileInputStream( file );
			properties.load( in );
			String className = properties.getProperty( FACTORY_PROPERTY );
			Class clazz = Class.forName( className );
			instance = (DAOFactory) clazz.newInstance();
			
			if( instance == null ){
				instance = new OracleDAOFactory();
			}
		}
Na linha:
instance = (DAOFactory) clazz.newInstance();
eu retorno a conexão estabelecida. Então internamente a isso tenho: Classe OracleDAOFactory extends DAOFactory:
File file = new File( PROPERTIES_FILE );
		FileInputStream in = new FileInputStream( file );
		properties = new Properties();
		try
		{
			properties.load( in );
			Class.forName( properties.getProperty( DRIVER ) );
		}
O problema acontece na linha:
Class.forName( properties.getProperty( DRIVER ) );
Ele dá ClassNotFoundException

Mas não sei porque.

PROPERTIES_FILE 1 = dao.properties
FACTORY_PROPERTIES = br.pucpr.bugcontrol.model.dao.sql.OracleDAOFactory

PROPERTIES_FILE 2 = oracle.properties
Dentro do oracle.properties tem: driver=oracle.jdbc.driver.OracleDriver
url=jdbc:Oracle:thin:@SVUXDEV2:10011:CRISIEB
user=statusdb
password=teste123

Desde já agradeço a todos pela ajuda!
Abraços!

17 Respostas

fiaux

Hoje tá brabo, tão zuando o fórum.

edit: a mensagem indevida foi removida

fiaux

Com relação ao erro: você incluiu o driver no projeto?

rafaelglauber

Oi blackout,

Tá faltando o ojdbcX.jar em seu classpath, coloca ele na pasta lib de sua aplicação.

X = versão do driver.

blackout

rafaelglauber:
Oi blackout,

Tá faltando o ojdbcX.jar em seu classpath, coloca ele na pasta lib de sua aplicação.

X = versão do driver.

Na verdade não é isso não cara, o .jar está no meu classpath, é o classes12.jar. Deve ser outra coisa!!!

fiaux

Qual o valor em DRIVER no momento de execução?

blackout

ORACLE = oracle.jdbc.driver.OracleDriver

rafaelglauber

Por quê você tá usando essa versão? Qual a versão do JDK que você tá usando?

blackout

Por quê você tá usando essa versão? Qual a versão do JDK que você tá usando?

Estou usando essa versão, porque sempre usei ela e nunca tinha dado problema, vou tirar esse .jar e colocar o ojdb14, daqui a pouco eu falo o que deu hehehe

blackout

Pessoal, mudei a versão do .jar e mesmo assim está dando o mesmo erro!

rafaelglauber

Você já viu o stack trace? Nele diz qual a classe que não achou…esse problema é simples, não tem outra explicação que não seja a não presença do jar em que tá a classe no ClassPath.

fiaux

Você já viu o stack trace? Nele diz qual a classe que não achou…esse problema é simples, não tem outra explicação que não seja a não presença do jar em que tá a classe no ClassPath.

Exato, é simples assim. Como está o classpath?

blackout

Moçada, estou dizendo que o classpath está certo porque no primeiro Class.forName(…) não dá erro, o erro só acontece no segundo Class.forName(…).

Além do erro: ClassNotFoundException, ele diz detailMessage=oracle.jdbc.driver.OracleDriver

Já aconteceu com alguém isso?

rafaelglauber

blackout:
Moçada, estou dizendo que o classpath está certo porque no primeiro Class.forName(…) não dá erro, o erro só acontece no segundo Class.forName(…).

Além do erro: ClassNotFoundException, ele diz detailMessage=oracle.jdbc.driver.OracleDriver

Já aconteceu com alguém isso?

Posta o stacktrace todo por favor.

fiaux

Cara… por favor… bota o classpath e o stack trace todo aí vai…

blackout

java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1360) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1206) at java.lang.ClassLoader.loadClassInternal(Unknown Source) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) at br.pucpr.bugcontrol.model.dao.sql.OracleDAOFactory.<init>(OracleDAOFactory.java:42) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at java.lang.Class.newInstance0(Unknown Source) at java.lang.Class.newInstance(Unknown Source) at br.pucpr.bugcontrol.model.dao.DAOFactory.getInstance(DAOFactory.java:33) at br.pucpr.bugcontrol.model.servlets.ServletInsereProjeto.doPost(ServletInsereProjeto.java:86) at javax.servlet.http.HttpServlet.service(HttpServlet.java:710) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 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:175) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) 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:286) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Unknown Source)

blackout

Pessoal, um amigo meu me ajudou a achar o problema, primeiro criei uma classe main pra testar a conexão, e deu certo.
Então chegamos a conclusão que deveriamos colocar o .jar do oracle no lib do tomcat, e aí funcionou.

Mesmo assim quero agradecer a ajuda de vocês.
Muito obrigado!

Att.

rafaelglauber

blackout:
Pessoal, um amigo meu me ajudou a achar o problema, primeiro criei uma classe main pra testar a conexão, e deu certo.
Então chegamos a conclusão que deveriamos colocar o .jar do oracle no lib do tomcat, e aí funcionou.

Mesmo assim quero agradecer a ajuda de vocês.
Muito obrigado!

Att.

ainda bem que só era isso: faltava o jar no classpath…ufa! :smiley:

Criado 17 de setembro de 2008
Ultima resposta 18 de set. de 2008
Respostas 17
Participantes 3