2017-05-25 369 views
0

我; M试图建立,我发现here的网站,当我运行应用程序,我得到显示java.lang.NullPointerException在MySQL

错误创建名为“数据源”豆在org.o7planning定义.springmvcshoppingcart.config.ApplicationContextConfig:通过工厂方法的Bean实例化失败;嵌套异常是org.springframework.beans.BeanInstantiationException:无法实例化[javax.sql.DataSource]:工厂方法'getDataSource'抛出异常;嵌套的异常是java.lang.NullPointerException`

我环顾了我的代码,问题似乎是关于应用程序没有连接到数据库的事实。当我尝试访问http://127.0.0.1:3306/paw时,它只是告诉我该页面无法正常工作。

ds-hibernate-cfg.properties

# DataSource 

ds.database-driver=com.mysql.jdbc.Driver 
ds.url=jdbc:mysql://127.0.0.1:3306/paw 
ds.username=root 
ds.password= 


# Hibernate Config 

hibernate.dialect=org.hibernate.dialect.MySQLDialect 
hibernate.show_sql=true 
current_session_context_class=thread 
hibernate.hbm2ddl.auto=update 

ApplicationContextConfig.java

package org.o7planning.springmvcshoppingcart.config; 

import java.util.Properties; 

import javax.sql.DataSource; 
import com.mysql.jdbc.Driver; 

import org.hibernate.SessionFactory; 
import org.o7planning.springmvcshoppingcart.dao.impl.AccountDAO; 
import org.o7planning.springmvcshoppingcart.dao.impl.OrderDAO; 
import org.o7planning.springmvcshoppingcart.dao.impl.ProductDAO; 
import org.o7planning.springmvcshoppingcart.dao.impl.AccountDAOImpl; 
import org.o7planning.springmvcshoppingcart.dao.impl.OrderDAOImpl; 
import org.o7planning.springmvcshoppingcart.dao.impl.ProductDAOImpl; 
import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.ComponentScan; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.context.annotation.PropertySource; 
import org.springframework.context.support.ResourceBundleMessageSource; 
import org.springframework.core.env.Environment; 
import org.springframework.jdbc.datasource.DriverManagerDataSource; 
import org.springframework.orm.hibernate5.HibernateTransactionManager; 
import org.springframework.orm.hibernate5.LocalSessionFactoryBean; 
import org.springframework.transaction.annotation.EnableTransactionManagement; 
import org.springframework.web.multipart.commons.CommonsMultipartResolver; 
import org.springframework.web.servlet.view.InternalResourceViewResolver; 

@Configuration 
@ComponentScan("org.o7planning.springmvcshoppingcart.*") 
@EnableTransactionManagement 
// Load to Environment. 
@PropertySource("classpath:ds-hibernate-cfg.properties") 
public class ApplicationContextConfig { 

    // The Environment class serves as the property holder 
    // and stores all the properties loaded by the @PropertySource 

    private Environment env; 

    @Bean 
    public ResourceBundleMessageSource messageSource() { 
     ResourceBundleMessageSource rb = new ResourceBundleMessageSource(); 
     // Load property in message/validator.properties 
     rb.setBasenames(new String[] { "messages/validator" }); 
     return rb; 
    } 

    @Bean(name = "viewResolver") 
    public InternalResourceViewResolver getViewResolver() { 
     InternalResourceViewResolver viewResolver = new InternalResourceViewResolver(); 
     viewResolver.setPrefix("/WEB-INF/pages/"); 
     viewResolver.setSuffix(".jsp"); 
     return viewResolver; 
    } 

    // Config for Upload. 
    @Bean(name = "multipartResolver") 
    public CommonsMultipartResolver multipartResolver() { 
     CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver(); 

     // Set Max Size... 
     // commonsMultipartResolver.setMaxUploadSize(...); 

     return commonsMultipartResolver; 
    } 

    @Bean(name = "dataSource") 
    public DataSource getDataSource() { 
     DriverManagerDataSource dataSource = new DriverManagerDataSource(); 

     // See: ds-hibernate-cfg.properties 
     dataSource.setDriverClassName(env.getProperty("ds.database-driver")); 
     dataSource.setUrl(env.getProperty("ds.url")); 
     dataSource.setUsername(env.getProperty("ds.username")); 
     dataSource.setPassword(env.getProperty("ds.password")); 

     System.out.println("## getDataSource: " + dataSource); 

     return dataSource; 
    } 


    @Bean(name = "sessionFactory") 
    public SessionFactory getSessionFactory(DataSource dataSource) throws Exception { 
     Properties properties = new Properties(); 

     // See: ds-hibernate-cfg.properties 
     properties.put("hibernate.dialect", env.getProperty("hibernate.dialect")); 
     properties.put("hibernate.show_sql", env.getProperty("hibernate.show_sql")); 
     properties.put("current_session_context_class", env.getProperty("current_session_context_class")); 


     LocalSessionFactoryBean factoryBean = new LocalSessionFactoryBean(); 

     // Package contain entity classes 
     factoryBean.setPackagesToScan(new String[] { "org.o7planning.springmvcshoppingcart.entity" }); 
     factoryBean.setDataSource(dataSource); 
     factoryBean.setHibernateProperties(properties); 
     factoryBean.afterPropertiesSet(); 
     // 
     SessionFactory sf = factoryBean.getObject(); 
     System.out.println("## getSessionFactory: " + sf); 
     return sf; 
    } 


    @Bean(name = "transactionManager") 
    public HibernateTransactionManager getTransactionManager(SessionFactory sessionFactory) { 
     HibernateTransactionManager transactionManager = new HibernateTransactionManager(sessionFactory); 

     return transactionManager; 
    } 

    @Bean(name = "accountDAO") 
    public AccountDAO getApplicantDAO() { 
     return new AccountDAOImpl(); 
    } 

    @Bean(name = "productDAO") 
    public ProductDAO getProductDAO() { 
     return new ProductDAOImpl(); 
    } 

    @Bean(name = "orderDAO") 
    public OrderDAO getOrderDAO() { 
     return new OrderDAOImpl(); 
    } 

    @Bean(name = "accountDAO") 
    public AccountDAO getAccountDAO() { 
     return new AccountDAOImpl(); 


} 

我完全错误日志

SEVERE: Context initialization failed 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in org.o7planning.springmvcshoppingcart.config.ApplicationContextConfig: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.sql.DataSource]: Factory method 'getDataSource' threw exception; nested exception is java.lang.NullPointerException 
    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:599) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1123) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1018) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:510) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:772) 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:839) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:538) 
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:444) 
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:326) 
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107) 
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4937) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5434) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:748) 
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.sql.DataSource]: Factory method 'getDataSource' threw exception; nested exception is java.lang.NullPointerException 
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:189) 
    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:588) 
    ... 23 more 
Caused by: java.lang.NullPointerException 
    at org.o7planning.springmvcshoppingcart.config.ApplicationContextConfig.getDataSource(ApplicationContextConfig.java:72) 
    at org.o7planning.springmvcshoppingcart.config.ApplicationContextConfig$$EnhancerBySpringCGLIB$$9065b576.CGLIB$getDataSource$1(<generated>) 
    at org.o7planning.springmvcshoppingcart.config.ApplicationContextConfig$$EnhancerBySpringCGLIB$$9065b576$$FastClassBySpringCGLIB$$21772b0c.invoke(<generated>) 
    at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228) 
    at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:355) 
    at org.o7planning.springmvcshoppingcart.config.ApplicationContextConfig$$EnhancerBySpringCGLIB$$9065b576.getDataSource(<generated>) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:162) 
    ... 24 more 

May 25, 2017 8:41:08 PM org.apache.catalina.core.StandardContext listenerStart 
SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in org.o7planning.springmvcshoppingcart.config.ApplicationContextConfig: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.sql.DataSource]: Factory method 'getDataSource' threw exception; nested exception is java.lang.NullPointerException 
    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:599) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1123) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1018) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:510) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:772) 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:839) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:538) 
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:444) 
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:326) 
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107) 
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4937) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5434) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:748) 
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.sql.DataSource]: Factory method 'getDataSource' threw exception; nested exception is java.lang.NullPointerException 
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:189) 
    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:588) 
    ... 23 more 
Caused by: java.lang.NullPointerException 
    at org.o7planning.springmvcshoppingcart.config.ApplicationContextConfig.getDataSource(ApplicationContextConfig.java:72) 
    at org.o7planning.springmvcshoppingcart.config.ApplicationContextConfig$$EnhancerBySpringCGLIB$$9065b576.CGLIB$getDataSource$1(<generated>) 
    at org.o7planning.springmvcshoppingcart.config.ApplicationContextConfig$$EnhancerBySpringCGLIB$$9065b576$$FastClassBySpringCGLIB$$21772b0c.invoke(<generated>) 
    at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228) 
    at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:355) 
    at org.o7planning.springmvcshoppingcart.config.ApplicationContextConfig$$EnhancerBySpringCGLIB$$9065b576.getDataSource(<generated>) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:162) 
    ... 24 more 
+0

如果使用其他客户端连接到该数据库,它是否工作? – Alfabravo

+1

我想你错过了'env'变量的@Inject或@Autowired。 – luk2302

+0

可能的重复[什么是NullPointerException,以及如何解决它?](https://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it ) – dunni

回答

相关问题