Развертывание Java Heroku не выполняется

Я постоянно получаю эту ошибку при попытке развернуть сервер Java в 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

Я думаю, что в профиле указан неверный путь, потому что при сборке Heroku я вижу эту ошибку:

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

Но это буквально то, что есть в моем Procfile:

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

Когда я вхожу в bash на героку и запускаю сервер вручную с помощью приведенной выше команды, он работает, но я не могу заставить героку запустить сервер с heroku open. Вылетает при каждом релизе. Кто-нибудь видел это раньше?

Procfile в 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>

person wizeOnes    schedule 18.11.2017    source источник


Ответы (3)


Я вижу две интересные вещи.

Ваш procfile относится к

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

Это разумно, поскольку ваш pom определяет версию как 1.0-SNAPSHOT, но Heroku пытается найти файл jar java -jar ./target/chatappdataserver-1.0-jar-with-dependencies.jar в соответствии с журналом, которым вы поделились.

Это странно, и вам нужно это понять. Или измените свою версию в вашем pom на 1.0

Версия не обязательно должна быть дополнена SNAPSHOT.

Еще одна вещь, которую я считаю странной, это то, что вы не указываете порт, который будете использовать. Heroku динамически назначает порт, и затем они будут перенаправлять вызовы с вашего хоста javachatapp-dataserver.herokuapp.com на порт 80 на этот динамически назначаемый порт.

В моем procfile я определил такой порт

-Dport=$PORT

Мой полный procfile выглядит так

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

Я строю с помощью Gradle, поэтому путь к файлу jar отличается. Но это единственная большая разница между использованием Maven и Gradle в этом контексте.

person Thomas Sundberg    schedule 20.11.2017
comment
Это произошло потому, что веб-процесс в файле pom.xml ссылался на: java -jar ./target/chatappdataserver-1.0-jar-with-dependencies.jar. Я изменил его на: web: java -jar ./target/chatappdataserver-1.0-SNAPSHOT-jar-with-dependencies.jar, и все заработало. - person wizeOnes; 20.11.2017

Попробуйте запустить

$ heroku ps:scale web=1

Это обеспечит работу веб-дино. Что-то в предыдущем развертывании могло привести к уменьшению масштаба.

person codefinger    schedule 18.11.2017
comment
Когда я запускаю эту команду, она говорит, что не может найти этот тип процесса. На самом деле я нахожусь на бесплатном уровне в героку, и у меня уже развернуто репо; может из-за этого не работает? - person wizeOnes; 19.11.2017
comment
Вы развертываете с помощью Git? Ваш Procfile зарегистрирован? - person codefinger; 19.11.2017
comment
Я развернул с помощью maven: mvn heroku: deploy, heroku open. Однако в первый раз, когда я развернулся, это было через git: git push heroku master, heroku open. Я удалил все это репо из Heroku и повторно развернул его с помощью maven. - person wizeOnes; 19.11.2017
comment
Какая конфигурация находится в вашем pom.xml? - person codefinger; 19.11.2017
comment
В основном я следовал этому руководству по Java-apart. - person wizeOnes; 19.11.2017
comment
Я загружу свой файл pom.xml - person wizeOnes; 19.11.2017
comment
Эта статья очень старая. Обновите свой плагин heroku-maven до версии 2.0.1. - person codefinger; 19.11.2017
comment
Нормально будет делать. Я думаю, проблема также может заключаться в том, что тип веб-процесса: java -jar ./target/chatappdataserver-1.0-jar-with-dependencies.jar в pom.xml - person wizeOnes; 19.11.2017
comment
Да, это был web process, спасибо за помощь! - person wizeOnes; 19.11.2017

Проблема в:

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

Вы должны написать имя вашего артефактаId-версия-дескрипторRef.jar в вашем случае: chatappdataserver-1.0-SNAPSHOT-jar-with-dependencies.jar

person juan pablo centurion    schedule 02.12.2020