简体   繁体   中英

Java Heroku Deployment is failing

I keep getting this error when trying to deploy a Java server to Heroku.

在此处输入图片说明

2017-11-18T18:22:34.252354+00:00 heroku[router]: at=error code=H14 desc="No web 
processes running" method=GET path="/favicon.ico" host=javachatapp-dataserver.herokuapp.com request_id=e899dbbc-1687-470d-a14f-2fffd0cdba12 fwd="24.125.73.190" dyno= connect= service= status=503 bytes= protocol=https

2017-11-18T18:22:34.195269+00:00 heroku[router]: at=error code=H14 desc="No web processes running" method=GET path="/" host=javachatapp-dataserver.herokuapp.com request_id=f3363e55-f850-4235-90e2-6cb6468dc7e5 fwd="24.125.73.190" dyno= connect= service= status=503 bytes= protocol=https

I think it has an incorrect path in the Profile, because when Heroku is building, I see this Error:

2017-11-18T01:04:45.763178+00:00 heroku[web.1]: Starting process with command `java -jar ./target/chatappdataserver-1.0-jar-with-dependencies.jar`
2017-11-18T01:04:47.619837+00:00 app[web.1]: Setting JAVA_TOOL_OPTIONS defaults based on dyno size. Custom settings will override them.
2017-11-18T01:04:47.620602+00:00 app[web.1]: Error: Unable to access jarfile ./target/chatappdataserver-1.0-jar-with-dependencies.jar

But this is literally what my Procfile has in it:

web: java -jar ./target/chatappdataserver-1.0-SNAPSHOT-jar-with-dependencies.jar

When I log into bash on heroku, and start the server manually with the above command it works, but I can't seem to get heroku to start the server with heroku open . It crashes on every release. Has anyone seen this before?

Procfile in Heroku 在此处输入图片说明


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.wisen.chatappdataserver</groupId>
    <artifactId>chatappdataserver</artifactId>
    <version>1.0-SNAPSHOT</version>


    <dependencies>
        <dependency>
            <groupId>com.sparkjava</groupId>
            <artifactId>spark-core</artifactId>
            <version>2.2</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <descriptorRefs>
                        <!-- This tells Maven to include all dependencies -->
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                    <archive>
                        <manifest>
                            <mainClass>Main</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
            <plugin>
                <groupId>com.heroku.sdk</groupId>
                <artifactId>heroku-maven-plugin</artifactId>
                <version>0.4.4</version>
                <configuration>
                    <jdkVersion>1.8</jdkVersion>
                    <appName>javachatapp-dataserver</appName>
                    <processTypes>
                        <!-- Tell Heroku how to launch your application -->
                        <web>java -jar ./target/chatappdataserver-1.0-jar-with-dependencies.jar</web>
                    </processTypes>
                </configuration>
            </plugin>
        </plugins>
    </build>



</project>

I see two thing that are interesting.

Your procfile refers to

web: java -jar ./target/chatappdataserver-1.0-SNAPSHOT-jar-with-dependencies.jar

Which is reasonable since your pom defines the version as 1.0-SNAPSHOT but Heroku tries to find the jar file java -jar ./target/chatappdataserver-1.0-jar-with-dependencies.jar according to the log you shared.

That is strange and something you need to understand. Or change your version in your pom to 1.0

Version don't have to be appended with SNAPSHOT .

The other thing that I think is strange is that you don't specify the port you will be using. Heroku dynamically assigns a port and they will then route calls from your host javachatapp-dataserver.herokuapp.com on port 80 to this dynamically assigned port.

In my procfile, I have defined a port like this

-Dport=$PORT

My complete procfile looks like this

web: java $JAVA_OPTS -Dport=$PORT -jar ./build/libs/tage-1.0-SNAPSHOT-all.jar

I'm building using Gradle so the path to the jar file is different. But thats the only big difference between using Maven and Gradle in this context.

Try running

$ heroku ps:scale web=1

This will ensure a web dyno is running. Something in a previous deploy may have caused it to scale down.

The problem is in:

<!-- Tell Heroku how to launch your application -->
<web>java -jar ./target/chatappdataserver-1.0-jar-with-dependencies.jar</web>

You must write the name of your artifactId-version-descriptorRef.jar in your case: chatappdataserver-1.0-SNAPSHOT-jar-with-dependencies.jar

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM