webapp-runner错误(NoInitialContextException)

时间:2015-05-26 23:41:22

标签: java spring maven heroku

我有一个使用Spring和maven的webapp项目(在J2EE中)。通常我在Eclipse tomcat中运行这个项目(用于调试目的)。现在我想在Heroku中运行它,并按照https://devcenter.heroku.com/articles/java-webapp-runner

中的教程进行操作

但是当我运行命令java -jar target / dependency / webapp-runner.jar target / * .war时,以下错误给了我:

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"/>

如何解决此错误

1 个答案:

答案 0 :(得分:0)

我遇到了与spring 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上的文件,其中包含网址,用户,密码和其他变量。

我用{/ 1}替换了dataSource中的bean application-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-app-runner添加此命令进行部署

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

到Procfile