importdao.AlunoDAO;importdao.DAOFactory;publicclassTeste{publicstaticvoidmain(String[]args){DAOFactorybase=DAOFactory.getInstance("javabase");System.out.println("consegui pegar o factory");AlunoDAOaluno=base.getAlunoDAO();System.out.println("pegou o alunoDAo");}}
Na verdade a mensagem de erro diz que ocorreu uma exceção no método main.
O método que não foi encontrado foi o dao.DAOFactory.getAlunoDAO() e não o main.
carlosgaldino
Cristiano de Barros:
Na verdade a mensagem de erro diz que ocorreu uma exceção no método main.
O método que não foi encontrado foi o dao.DAOFactory.getAlunoDAO() e não o main.
Então, o método existe, tá aí:
packagedao;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.SQLException;importjava.util.HashMap;importjava.util.Map;importjavax.naming.InitialContext;importjavax.naming.NamingException;importjavax.sql.DataSource;publicfinalclassDAOFactory{privatestaticfinalStringPROPERTY_URL="url";privatestaticfinalStringPROPERTY_DRIVER="driver";privatestaticfinalStringPROPERTY_USERNAME="username";privatestaticfinalStringPROPERTY_PASSWORD="password";privatestaticfinalMap<String,DAOFactory>INSTANCES=newHashMap<String,DAOFactory>();privateStringurl;privateStringusername;privateStringpassword;privateDataSourcedataSource;privateDAOFactory(Stringname)throwsDAOConfigurationException{DAOPropertiesproperties=newDAOProperties(name);this.url=properties.getProperty(PROPERTY_URL,true);StringdriverClassName=properties.getProperty(PROPERTY_DRIVER,false);this.password=properties.getProperty(PROPERTY_PASSWORD,false);this.username=properties.getProperty(PROPERTY_USERNAME,this.password!=null);if(driverClassName!=null){// If driver is specified, then load it and let it register itself with DriverManager.try{Class.forName(driverClassName);}catch(ClassNotFoundExceptione){thrownewDAOConfigurationException("Classe driver '"+driverClassName+"' não encontrada no classpath.",e);}}else{// Else assume URL as DataSource URL and lookup it in the JNDI.try{dataSource=(DataSource)newInitialContext().lookup(url);}catch(NamingExceptione){thrownewDAOConfigurationException("DataSource '"+url+"' não encontrada no JNDI.",e);}}}publicstaticDAOFactorygetInstance(Stringname)throwsDAOConfigurationException{if(name==null){thrownewDAOConfigurationException("Nome da base de dados é nulo.");}DAOFactoryinstance=INSTANCES.get(name);if(instance==null){instance=newDAOFactory(name);INSTANCES.put(name,instance);}returninstance;}ConnectiongetConnection()throwsSQLException{if(dataSource!=null){if(username!=null){returndataSource.getConnection(username,password);}else{returndataSource.getConnection();}}else{returnDriverManager.getConnection(url,username,password);}}publicAlunoDAOgetAlunoDAO(){returnnewAlunoDAO(this);}// Você pode adicionar mais getters para DAOs aqui.}
carlosgaldino
Bom, resolvi o problema. Tinha um .jar adicionado como biblioteca e o compilador buscava o método nele, onde não existia. Excluí ele e funcionou.