如何在heroku应用程序中更改java运行时版本

brccelvz  于 2022-11-13  发布在  Java
关注(0)|答案(1)|浏览(153)

我尝试部署一个使用JDK 11的Spring Boot 应用程序,但在Heroku上构建时,它安装的是OpenJdk 1.8:

-----> Uploading build...
       - success
-----> Deploying...
remote: 
remote: -----> Building on the Heroku-22 stack
remote: -----> Using buildpack: heroku/jvm
remote: -----> heroku-deploy app detected
remote: -----> Installing OpenJDK 1.8... done
remote: -----> Discovering process types
remote:        Procfile declares types -> web
remote: 
remote: -----> Compressing...
remote:        Done: 106.2M
remote: -----> Launching...
remote:        Released v14

虽然我在项目的根目录下创建了一个'system.properties'文件,并将其提交给git java.runtime.version=11,但它仍然安装了OpenJdk 1.8而不是11。
这是Heroku Cli的例外:

2022-10-23T18:03:37.124247+00:00 heroku[web.1]: State changed from starting to crashed
2022-10-23T18:03:37.127120+00:00 heroku[web.1]: State changed from crashed to starting
2022-10-23T18:03:41.139758+00:00 heroku[web.1]: Starting process with command `java $JAVA_OPTS -jar SeniorCare-0.0.1-SNAPSHOT.jar  $JAR_OPTS`
2022-10-23T18:03:42.062965+00:00 app[web.1]: Setting JAVA_TOOL_OPTIONS defaults based on dyno size. Custom settings will override them.
2022-10-23T18:03:42.069472+00:00 app[web.1]: Picked up JAVA_TOOL_OPTIONS: -Xmx300m -Xss512k -XX:CICompilerCount=2 -Dfile.encoding=UTF-8
2022-10-23T18:03:42.544439+00:00 heroku[web.1]: Process exited with status 1
2022-10-23T18:03:42.646566+00:00 heroku[web.1]: State changed from starting to crashed
2022-10-23T18:03:42.408259+00:00 app[web.1]: Exception in thread "main" java.lang.UnsupportedClassVersionError: dsi/senior/SeniorCareApplication has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
2022-10-23T18:03:42.408398+00:00 app[web.1]: at java.lang.ClassLoader.defineClass1(Native Method)
2022-10-23T18:03:42.408445+00:00 app[web.1]: at java.lang.ClassLoader.defineClass(ClassLoader.java:757)
2022-10-23T18:03:42.408507+00:00 app[web.1]: at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
2022-10-23T18:03:42.408597+00:00 app[web.1]: at java.net.URLClassLoader.defineClass(URLClassLoader.java:473)
2022-10-23T18:03:42.408637+00:00 app[web.1]: at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
2022-10-23T18:03:42.408674+00:00 app[web.1]: at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
2022-10-23T18:03:42.408712+00:00 app[web.1]: at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
2022-10-23T18:03:42.408768+00:00 app[web.1]: at java.security.AccessController.doPrivileged(Native Method)
2022-10-23T18:03:42.408826+00:00 app[web.1]: at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
2022-10-23T18:03:42.408878+00:00 app[web.1]: at java.lang.ClassLoader.loadClass(ClassLoader.java:419)
2022-10-23T18:03:42.408940+00:00 app[web.1]: at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:151)
2022-10-23T18:03:42.408997+00:00 app[web.1]: at java.lang.ClassLoader.loadClass(ClassLoader.java:352)
2022-10-23T18:03:42.409054+00:00 app[web.1]: at java.lang.Class.forName0(Native Method)
2022-10-23T18:03:42.409099+00:00 app[web.1]: at java.lang.Class.forName(Class.java:348)
2022-10-23T18:03:42.409161+00:00 app[web.1]: at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:46)
2022-10-23T18:03:42.409220+00:00 app[web.1]: at org.springframework.boot.loader.Launcher.launch(Launcher.java:108)
2022-10-23T18:03:42.409255+00:00 app[web.1]: at org.springframework.boot.loader.Launcher.launch(Launcher.java:58)
2022-10-23T18:03:42.409297+00:00 app[web.1]: at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:88)
anauzrmj

anauzrmj1#

默认情况下,Heroku将JDK 1.8用于Java应用程序。
您可以通过在system.properties文件中指定Java运行时版本来更改此设置。

java.runtime.version=<jdk_version> (e.g. 11)

请查看this以了解更多信息。

相关问题