Java Heroku部署失败
在尝试将Java服务器部署到Heroku时,我一直遇到此错误。 我认为它在配置文件中的路径不正确,因为当Heroku正在构建时,我看到以下错误:Java Heroku部署失败,java,maven,heroku,deployment,spark-java,Java,Maven,Heroku,Deployment,Spark Java,在尝试将Java服务器部署到Heroku时,我一直遇到此错误。 我认为它在配置文件中的路径不正确,因为当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
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
当我在heroku上登录bash并使用上面的命令手动启动服务器时,它可以工作,但我似乎无法让heroku在heroku打开时启动服务器。每次发布都会崩溃。以前有人见过这个吗
Heroku中的Procfile
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>
4.0.0
com.wisen.chatappdataserver
chatappdataserver
1.0-快照
com.sparkjava
火花芯
2.2
org.apache.maven.plugins
maven编译器插件
2.3.2
1.8
1.8
maven汇编插件
包裹
单一的
带有依赖项的jar
主要
com.heroku.sdk
heroku maven插件
0.4.4
1.8
javachatapp数据服务器
java-jar./target/chatappdataserver-1.0-jar-with-dependencies.jar
尝试运行
$ heroku ps:scale web=1
这将确保web dyno正在运行。以前部署中的某些内容可能导致它缩小规模 试试跑步
$ heroku ps:scale web=1
这将确保web dyno正在运行。以前部署中的某些内容可能导致它缩小规模 我看到两件有趣的事 您的proc文件引用
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
版本不必附加快照
我认为另一件奇怪的事情是,您没有指定要使用的端口。Heroku动态分配一个端口,然后他们将从端口80上的主机javachatapp dataserver.herokuapp.com
的呼叫路由到此动态分配的端口
在我的procfile中,我定义了这样一个端口
-Dport=$PORT
我的完整proc文件如下所示
web:java$java\u OPTS-Dport=$PORT-jar./build/libs/tage-1.0-SNAPSHOT-all.jar
我正在使用Gradle进行构建,因此jar文件的路径是不同的。但这是在这种情况下使用Maven和Gradle的唯一区别。我看到了两件有趣的事情 您的proc文件引用
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
版本不必附加快照
我认为另一件奇怪的事情是,您没有指定要使用的端口。Heroku动态分配一个端口,然后他们将从端口80上的主机javachatapp dataserver.herokuapp.com
的呼叫路由到此动态分配的端口
在我的procfile中,我定义了这样一个端口
-Dport=$PORT
我的完整proc文件如下所示
web:java$java\u OPTS-Dport=$PORT-jar./build/libs/tage-1.0-SNAPSHOT-all.jar
我正在使用Gradle进行构建,因此jar文件的路径是不同的。但这是在这种情况下使用Maven和Gradle的唯一区别。问题在于:
<!-- Tell Heroku how to launch your application -->
<web>java -jar ./target/chatappdataserver-1.0-jar-with-dependencies.jar</web>
java-jar./target/chatappdataserver-1.0-jar-with-dependencies.jar
您必须在案例中写入artifactId-version-descriptorRef.jar的名称:chatappdataserver-1.0-SNAPSHOT-jar-with-dependencies.jar问题在于:
<!-- Tell Heroku how to launch your application -->
<web>java -jar ./target/chatappdataserver-1.0-jar-with-dependencies.jar</web>
java-jar./target/chatappdataserver-1.0-jar-with-dependencies.jar
在您的案例中,必须写入artifactId-version-descriptorRef.jar的名称:chatappdataserver-1.0-SNAPSHOT-jar-with-dependencies.jar当我运行该命令时,它会说找不到该进程类型。我实际上在heroku的免费层,并且已经部署了回购协议;这可能是它不起作用的原因吗?您是使用Git部署的吗?您的Procfile是否签入?我使用maven:
mvn-heroku:deploy
,heroku-open
进行部署。然而,我第一次部署时,它是通过git:git push heroku master
,heroku open
。我从Heroku中删除了整个repo,并使用maven重新部署。pom.xml中有什么配置?是的,这是web进程
,感谢您的帮助!当我运行该命令时,它说找不到该进程类型。事实上,我在heroku是免费的,而且已经有了