在 Heroku 上部署 Java Telegram 机器人:无法找到或加载主程序 class
Deploy Java Telegram bot on Heroku: Could not find or load main class
我正在用这个库写一个电报机器人:https://github.com/rubenlagus/TelegramBots .
机器人可以在我的本地机器上成功 运行 但不能在 Heroku 上 运行。
错误消息是“无法找到或加载 main class。”
我看了很多类似的问题,但仍然无法解决我的问题,因为其他问题与此有一些不同。
以下是在 Heroku 上发生错误时的一些日志:
2021-05-12T11:51:15.644410+00:00 heroku[worker.1]: Starting process with command `sh target/bin/my_bot_test`
2021-05-12T11:51:17.945513+00:00 heroku[worker.1]: State changed from starting to up
2021-05-12T11:51:19.427171+00:00 app[worker.1]: Picked up JAVA_TOOL_OPTIONS: -Xmx300m -Xss512k -XX:CICompilerCount=2 -Dfile.encoding=UTF-8
2021-05-12T11:51:19.616191+00:00 app[worker.1]: Error: Could not find or load main class Main
2021-05-12T11:51:19.668857+00:00 heroku[worker.1]: Process exited with status 1
2021-05-12T11:51:19.756822+00:00 heroku[worker.1]: State changed from up to crashed
这里是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>org.example</groupId>
<artifactId>my_bot_test</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.telegram</groupId>
<artifactId>telegrambots</artifactId>
<version>5.2.0</version>
</dependency>
<dependency>
<groupId>org.telegram</groupId>
<artifactId>telegrambots-abilities</artifactId>
<version>5.2.0</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.30</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.30</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>appassembler-maven-plugin</artifactId>
<version>1.1.1</version>
<configuration>
<assembleDirectory>target</assembleDirectory>
<programs>
<program>
<mainClass>Main</mainClass>
<name>my_bot_test</name>
</program>
</programs>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>assemble</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
以下是一些用于部署的命令:
mvn clean install
git add .
git commit -m "test"
heroku login
git remote add heroku [gitUrl]
git push heroku master
heroku ps:scale worker=1
学习时参考了这个页面:https://javarush.ru/groups/posts/504-sozdanie-telegram-bota-na-java-ot-idei-do-deploja
我写的Procfile:
worker: sh target/bin/my_bot_test
了解到Procfile
的内容表示在项目根目录下执行命令target/bin/my_bot_test
。所以我尝试在我的机器上执行它并成功 运行s。
我不知道错误是如何发生的以及如何解决问题...请帮助我。提前致谢。
问题已解决。
这是因为 Heroku 会在服务器上编译源代码,而不是直接 运行 编译程序。所以我应该将源代码而不是编译后的程序推送到Heroku的git。
我正在用这个库写一个电报机器人:https://github.com/rubenlagus/TelegramBots .
机器人可以在我的本地机器上成功 运行 但不能在 Heroku 上 运行。 错误消息是“无法找到或加载 main class。”
我看了很多类似的问题,但仍然无法解决我的问题,因为其他问题与此有一些不同。
以下是在 Heroku 上发生错误时的一些日志:
2021-05-12T11:51:15.644410+00:00 heroku[worker.1]: Starting process with command `sh target/bin/my_bot_test`
2021-05-12T11:51:17.945513+00:00 heroku[worker.1]: State changed from starting to up
2021-05-12T11:51:19.427171+00:00 app[worker.1]: Picked up JAVA_TOOL_OPTIONS: -Xmx300m -Xss512k -XX:CICompilerCount=2 -Dfile.encoding=UTF-8
2021-05-12T11:51:19.616191+00:00 app[worker.1]: Error: Could not find or load main class Main
2021-05-12T11:51:19.668857+00:00 heroku[worker.1]: Process exited with status 1
2021-05-12T11:51:19.756822+00:00 heroku[worker.1]: State changed from up to crashed
这里是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>org.example</groupId>
<artifactId>my_bot_test</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.telegram</groupId>
<artifactId>telegrambots</artifactId>
<version>5.2.0</version>
</dependency>
<dependency>
<groupId>org.telegram</groupId>
<artifactId>telegrambots-abilities</artifactId>
<version>5.2.0</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.30</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.30</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>appassembler-maven-plugin</artifactId>
<version>1.1.1</version>
<configuration>
<assembleDirectory>target</assembleDirectory>
<programs>
<program>
<mainClass>Main</mainClass>
<name>my_bot_test</name>
</program>
</programs>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>assemble</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
以下是一些用于部署的命令:
mvn clean install
git add .
git commit -m "test"
heroku login
git remote add heroku [gitUrl]
git push heroku master
heroku ps:scale worker=1
学习时参考了这个页面:https://javarush.ru/groups/posts/504-sozdanie-telegram-bota-na-java-ot-idei-do-deploja
我写的Procfile:
worker: sh target/bin/my_bot_test
了解到Procfile
的内容表示在项目根目录下执行命令target/bin/my_bot_test
。所以我尝试在我的机器上执行它并成功 运行s。
我不知道错误是如何发生的以及如何解决问题...请帮助我。提前致谢。
问题已解决。
这是因为 Heroku 会在服务器上编译源代码,而不是直接 运行 编译程序。所以我应该将源代码而不是编译后的程序推送到Heroku的git。