我正在将应用程序部署到heroku。我使用tomcat 8.0.27和Java 7并在本地工作正常。我的pom.xml看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.app</groupId>
<artifactId>apiexpotaxi</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>apiexpotaxi</name>
<properties>
<endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>br.com.caelum</groupId>
<artifactId>vraptor</artifactId>
<version>4.1.4</version>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>eclipselink</artifactId>
<version>2.5.2</version>
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>org.eclipse.persistence.jpa.modelgen.processor</artifactId>
<version>2.5.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.0.1.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>4.2.0.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate.common</groupId>
<artifactId>hibernate-commons-annotations</artifactId>
<version>4.0.1.Final</version>
<classifier>tests</classifier>
</dependency>
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.0-api</artifactId>
<version>1.0.1.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.3.1.Final</version>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.0.0.GA</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.4</version>
</dependency>
<dependency>
<groupId>org.jboss.logging</groupId>
<artifactId>jboss-logging</artifactId>
<version>3.1.0.CR2</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.4</version>
</dependency>
<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.1-901.jdbc4</version>
<scope>runtime</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<compilerArguments>
<endorseddirs>${endorsed.dir}</endorseddirs>
</compilerArguments>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.3</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>com.github.jsimone</groupId>
<artifactId>webapp-runner</artifactId>
<version>8.0.30.2</version>
<destFileName>webapp-runner.jar</destFileName>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
我的Procfile:
web: java $JAVA_OPTS -jar target/dependency/webapp-runner.jar --port $PORT target/*.war
这是日志:
2016-06-14T20:00:43.690335+00:00 app[web.1]: Adding Context for /app/target/tomcat.22571/webapps/expanded
2016-06-14T20:00:43.690206+00:00 app[web.1]: Expanding apiexpotaxi-1.0-SNAPSHOT.war into /app/target/tomcat.22571/webapps/expanded
2016-06-14T20:00:45.613401+00:00 app[web.1]: Jun 14, 2016 8:00:45 PM org.apache.coyote.AbstractProtocol init
2016-06-14T20:00:45.731190+00:00 app[web.1]: Jun 14, 2016 8:00:45 PM org.apache.tomcat.util.net.NioSelectorPool getSharedSelector
2016-06-14T20:00:45.778319+00:00 app[web.1]: Jun 14, 2016 8:00:45 PM org.apache.catalina.core.StandardEngine startInternal
2016-06-14T20:00:45.778328+00:00 app[web.1]: INFO: Starting Servlet Engine: Apache Tomcat/8.0.30
2016-06-14T20:00:45.613410+00:00 app[web.1]: INFO: Initializing ProtocolHandler ["http-nio-22571"]
2016-06-14T20:00:45.761602+00:00 app[web.1]: INFO: Starting service Tomcat
2016-06-14T20:00:45.731199+00:00 app[web.1]: INFO: Using a shared selector for servlet write/read
2016-06-14T20:00:45.761592+00:00 app[web.1]: Jun 14, 2016 8:00:45 PM org.apache.catalina.core.StandardService startInternal
2016-06-14T20:00:46.322486+00:00 heroku[web.1]: State changed from starting to up
2016-06-14T20:00:46.781935+00:00 app[web.1]: Jun 14, 2016 8:00:46 PM org.apache.catalina.startup.ContextConfig getDefaultWebXmlFragment
2016-06-14T20:00:46.781946+00:00 app[web.1]: INFO: No global web.xml found
2016-06-14T20:00:49.769814+00:00 app[web.1]: Jun 14, 2016 8:00:49 PM org.apache.catalina.core.ContainerBase startInternal
2016-06-14T20:00:49.769825+00:00 app[web.1]: java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].StandardContext[]]
2016-06-14T20:00:49.769830+00:00 app[web.1]: at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1408)
2016-06-14T20:00:49.769829+00:00 app[web.1]: at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:871)
2016-06-14T20:00:49.769831+00:00 app[web.1]: at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1398)
2016-06-14T20:00:49.769831+00:00 app[web.1]: at java.util.concurrent.FutureTask.run(FutureTask.java:266)
2016-06-14T20:00:49.769824+00:00 app[web.1]: SEVERE: A child container failed during start
2016-06-14T20:00:49.769829+00:00 app[web.1]: at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
2016-06-14T20:00:49.769839+00:00 app[web.1]: at java.lang.Thread.run(Thread.java:745)
2016-06-14T20:00:49.769840+00:00 app[web.1]: Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].StandardContext[]]
2016-06-14T20:00:49.769836+00:00 app[web.1]: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
2016-06-14T20:00:49.769839+00:00 app[web.1]: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
2016-06-14T20:00:49.769842+00:00 app[web.1]: ... 6 more
2016-06-14T20:00:49.769826+00:00 app[web.1]: at java.util.concurrent.FutureTask.report(FutureTask.java:122)
2016-06-14T20:00:49.769841+00:00 app[web.1]: at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
2016-06-14T20:00:49.769843+00:00 app[web.1]: Caused by: java.lang.NoClassDefFoundError: Ljavax/enterprise/event/Event;
2016-06-14T20:00:49.769844+00:00 app[web.1]: at java.lang.Class.privateGetDeclaredFields(Class.java:2583)
2016-06-14T20:00:49.769843+00:00 app[web.1]: at java.lang.Class.getDeclaredFields0(Native Method)
2016-06-14T20:00:49.769846+00:00 app[web.1]: at org.apache.catalina.startup.WebAnnotationSet.loadFieldsAnnotation(WebAnnotationSet.java:256)
2016-06-14T20:00:49.769828+00:00 app[web.1]: at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:916)
2016-06-14T20:00:49.769848+00:00 app[web.1]: at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:774)
2016-06-14T20:00:49.769848+00:00 app[web.1]: at org.apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.java:334)
2016-06-14T20:00:49.769844+00:00 app[web.1]: at java.lang.Class.getDeclaredFields(Class.java:1916)
2016-06-14T20:00:49.769846+00:00 app[web.1]: at org.apache.catalina.startup.WebAnnotationSet.loadApplicationFilterAnnotations(WebAnnotationSet.java:105)
2016-06-14T20:00:49.769845+00:00 app[web.1]: at org.apache.catalina.util.Introspection.getDeclaredFields(Introspection.java:106)
2016-06-14T20:00:49.769827+00:00 app[web.1]: at java.util.concurrent.FutureTask.get(FutureTask.java:192)
2016-06-14T20:00:49.769847+00:00 app[web.1]: at org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.java:64)
2016-06-14T20:00:49.769851+00:00 app[web.1]: at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5154)
2016-06-14T20:00:49.769849+00:00 app[web.1]: at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:305)
2016-06-14T20:00:49.769852+00:00 app[web.1]: ... 6 more
2016-06-14T20:00:49.769853+00:00 app[web.1]: Caused by: java.lang.ClassNotFoundException: javax.enterprise.event.Event
2016-06-14T20:00:49.769850+00:00 app[web.1]: at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:95)
2016-06-14T20:00:49.769854+00:00 app[web.1]: at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1167)
2016-06-14T20:00:49.769855+00:00 app[web.1]:
2016-06-14T20:00:49.769852+00:00 app[web.1]: at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
2016-06-14T20:00:49.771558+00:00 app[web.1]: Jun 14, 2016 8:00:49 PM org.apache.catalina.core.ContainerBase startInternal
2016-06-14T20:00:49.771569+00:00 app[web.1]: at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:916)
2016-06-14T20:00:49.771568+00:00 app[web.1]: at java.util.concurrent.FutureTask.get(FutureTask.java:192)
2016-06-14T20:00:49.771566+00:00 app[web.1]: SEVERE: A child container failed during start
2016-06-14T20:00:49.771570+00:00 app[web.1]: at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)
2016-06-14T20:00:49.771568+00:00 app[web.1]: at java.util.concurrent.FutureTask.report(FutureTask.java:122)
2016-06-14T20:00:49.769855+00:00 app[web.1]: ... 20 more
2016-06-14T20:00:49.771567+00:00 app[web.1]: java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost]]
2016-06-14T20:00:49.771570+00:00 app[web.1]: at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
2016-06-14T20:00:49.769853+00:00 app[web.1]: at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1333)
2016-06-14T20:00:49.769850+00:00 app[web.1]: at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
2016-06-14T20:00:49.771571+00:00 app[web.1]: at org.apache.catalina.core.StandardService.startInternal(StandardService.java:441)
2016-06-14T20:00:49.771572+00:00 app[web.1]: at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:769)
2016-06-14T20:00:49.771573+00:00 app[web.1]: at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
2016-06-14T20:00:49.771574+00:00 app[web.1]: at org.apache.catalina.startup.Tomcat.start(Tomcat.java:344)
2016-06-14T20:00:49.771575+00:00 app[web.1]: at webapp.runner.launch.Main.main(Main.java:261)
2016-06-14T20:00:49.771575+00:00 app[web.1]: Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost]]
2016-06-14T20:00:49.771576+00:00 app[web.1]: at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
2016-06-14T20:00:49.771572+00:00 app[web.1]: at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
2016-06-14T20:00:49.771580+00:00 app[web.1]: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
2016-06-14T20:00:49.771582+00:00 app[web.1]: at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:924)
2016-06-14T20:00:49.771580+00:00 app[web.1]: at java.lang.Thread.run(Thread.java:745)
2016-06-14T20:00:49.771581+00:00 app[web.1]: Caused by: org.apache.catalina.LifecycleException: A child container failed during start
2016-06-14T20:00:49.771577+00:00 app[web.1]: at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1408)
2016-06-14T20:00:49.771579+00:00 app[web.1]: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
2016-06-14T20:00:49.771582+00:00 app[web.1]: at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:871)
2016-06-14T20:00:49.771583+00:00 app[web.1]: at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
2016-06-14T20:00:49.771584+00:00 app[web.1]: ... 6 more
2016-06-14T20:00:49.772589+00:00 app[web.1]: Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardService[Tomcat]]
2016-06-14T20:00:49.772259+00:00 app[web.1]: Exception in thread "main" org.apache.catalina.LifecycleException: Failed to start component [StandardServer[-1]]
2016-06-14T20:00:49.772357+00:00 app[web.1]: at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
2016-06-14T20:00:49.771584+00:00 app[web.1]:
2016-06-14T20:00:49.772665+00:00 app[web.1]: at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
2016-06-14T20:00:49.772420+00:00 app[web.1]: at org.apache.catalina.startup.Tomcat.start(Tomcat.java:344)
2016-06-14T20:00:49.772486+00:00 app[web.1]: at webapp.runner.launch.Main.main(Main.java:261)
2016-06-14T20:00:49.771578+00:00 app[web.1]: at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1398)
2016-06-14T20:00:49.772732+00:00 app[web.1]: at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:769)
2016-06-14T20:00:49.771578+00:00 app[web.1]: at java.util.concurrent.FutureTask.run(FutureTask.java:266)
2016-06-14T20:00:49.773065+00:00 app[web.1]: at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
2016-06-14T20:00:49.772797+00:00 app[web.1]: at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
2016-06-14T20:00:49.772869+00:00 app[web.1]: ... 2 more
2016-06-14T20:00:49.773535+00:00 app[web.1]: Caused by: org.apache.catalina.LifecycleException: A child container failed during start
2016-06-14T20:00:49.772991+00:00 app[web.1]: Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat]]
2016-06-14T20:00:49.773298+00:00 app[web.1]: at org.apache.catalina.core.StandardService.startInternal(StandardService.java:441)
2016-06-14T20:00:49.773365+00:00 app[web.1]: at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
2016-06-14T20:00:49.773427+00:00 app[web.1]: ... 4 more
2016-06-14T20:00:49.773742+00:00 app[web.1]: at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
2016-06-14T20:00:49.773610+00:00 app[web.1]: at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:924)
2016-06-14T20:00:49.773679+00:00 app[web.1]: at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)
2016-06-14T20:00:49.773800+00:00 app[web.1]: ... 6 more
2016-06-14T20:00:50.975298+00:00 heroku[web.1]: Process exited with status 1
2016-06-14T20:00:50.990864+00:00 heroku[web.1]: State changed from up to crashed
2016-06-14T20:03:31.360718+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=apiexpotaxi.herokuapp.com request_id=ab5586dd-92e3-480a-bce3-18c9999cf39b fwd="187.19.195.154" dyno= connect= service= status=503 bytes=
在我的依赖之前就是这样,并且工作正常:
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>