2015-05-26 33 views
2

我有一個使用Spring和maven的webapp項目(在J2EE中)。通常我在我的Eclipse Tomcat中運行這個項目(用於調試目的)。現在,我想在Heroku上運行此,我按照教程中https://devcenter.heroku.com/articles/java-webapp-runnerwebapp-runner錯誤(NoInitialContextException)

但是當我運行命令java -jar目標/依賴/ webapp的-runner.jar目標/ *戰爭以下錯誤是給我:。

javax.naming.NoInitialContextException: Cannot instantiate class: org.jnp.interfaces.NamingContextFactory [Root exception is java.lang.ClassNotFoundException: org.jnp.interfaces.NamingContextFactory] 

我在我的項目中有webapp/WEB-INF中的以下文件:application-context.xml,servlet.xml和web.xml。在應用上下文的JNDI配置爲:

<jee:jndi-lookup id="dataSource" jndi-name="java:comp/env/jdbc/standard"/> 

我怎樣才能解決這個錯誤

+0

這看起來像可能存在一個依賴項,它可能是由Tomcat或Eclipse注入的,當使用webapp-runner運行時不存在。什麼JAR文件包含'org.jnp.interfaces.NamingContextFactory'類?你可以把它放在類路徑上嗎? – codefinger

+0

我正在使用maven來處理所有的依賴關係。 – amachado

+0

你的哪個依賴項包含'org.jnp.interfaces.NamingContextFactory'類? – codefinger

回答

0

我有同樣的問題與彈簧3/Tomcat的配置,使其在Heroku上運行,而我只是解決了它,我在application-context.xml

<bean id="dataSource" 
     class="org.springframework.jndi.JndiObjectFactoryBean"> 
    <property name="jndiName"> 
     <value>java:comp/env/jdbc/catWDB</value> 
    </property> 
</bean> 

而且在src/main/webapp/META-INF/context.xml其中有網址,用戶名,密碼和其他變量的文件有這個。

我取代了豆dataSourceapplication-context.xml

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/> 
    <property name="url" value="jdbc:mysql://SERVER:3306/DATA_BASE?zeroDateTimeBehavior=convertToNull&amp;autoReconnect=true"/> 
    <property name="username" value="USERNAME"/> 
    <property name="password" value="PASSWORD"/> 
</bean> 

我現在我可以部署使用Heroku的web應用程序的領先者加入這個命令

web: java -jar target/dependency/webapp-runner.jar target/*.war --port $PORT

到Procfile