Heroku 部署构建失败 Java Spring 项目:包 java.net.http 不存在

0 java deployment spring heroku spring-boot

我一直在尝试在 Heroku 上部署 java spring 项目,但我不断收到此错误。该项目是一个跟踪器,它使用在线 csv 文件中的一些数据并使用这些信息显示数据。它还每天更新信息。当我使用 http://localhost:8080/ 在本地托管它时,它工作正常。这是错误消息。

\n
       [ERROR] COMPILATION ERROR : \n\n       [INFO] -------------------------------------------------------------\n\n       [ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[15,21] package java.net.http does not exist\n\n       [ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[16,21] package java.net.http does not exist\n\n       [ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[17,21] package java.net.http does not exist\n\n       [ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[46,9] cannot find symbol\n\n         symbol:   class HttpClient\n\n         location: class com.Corona.CoronaTrack.services.CoronaDataService\n\n       [ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[46,29] cannot find symbol\n\n         symbol:   variable HttpClient\n\n         location: class com.Corona.CoronaTrack.services.CoronaDataService\n\n       [ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[47,9] cannot find symbol\n\n         symbol:   class HttpClient\n\n         location: class com.Corona.CoronaTrack.services.CoronaDataService\n\n       [ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[47,30] cannot find symbol\n\n         symbol:   variable HttpClient\n\n         location: class com.Corona.CoronaTrack.services.CoronaDataService\n\n       [ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[48,9] cannot find symbol\n\n         symbol:   class HttpRequest\n\n         location: class com.Corona.CoronaTrack.services.CoronaDataService\n\n       [ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[48,30] cannot find symbol\n\n         symbol:   variable HttpRequest\n\n         location: class com.Corona.CoronaTrack.services.CoronaDataService\n\n       [ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[49,9] cannot find symbol\n\n         symbol:   class HttpRequest\n\n         location: class com.Corona.CoronaTrack.services.CoronaDataService\n\n       [ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[49,31] cannot find symbol\n\n         symbol:   variable HttpRequest\n\n         location: class com.Corona.CoronaTrack.services.CoronaDataService\n\n       [ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[51,9] cannot find symbol\n\n         symbol:   class HttpResponse\n\n         location: class com.Corona.CoronaTrack.services.CoronaDataService\n\n       [ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[51,76] package HttpResponse does not exist\n\n       [ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[52,9] cannot find symbol\n\n         symbol:   class HttpResponse\n\n         location: class com.Corona.CoronaTrack.services.CoronaDataService\n\n       [ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[52,78] package HttpResponse does not exist\n\n       [INFO] 15 errors \n\n       [INFO] -------------------------------------------------------------\n\n       [INFO] ------------------------------------------------------------------------\n\n       [INFO] BUILD FAILURE\n\n       [INFO] ------------------------------------------------------------------------\n\n       [INFO] Total time:  12.179 s\n\n       [INFO] Finished at: 2020-09-20T05:56:34Z\n\n       [INFO] ------------------------------------------------------------------------\n\n       [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project Corona-Track: Compilation failure: Compilation failure: \n\n       [ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[15,21] package java.net.http does not exist\n\n       [ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[16,21] package java.net.http does not exist\n\n       [ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[17,21] package java.net.http does not exist\n\n       [ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[46,9] cannot find symbol\n\n       [ERROR]   symbol:   class HttpClient\n\n       [ERROR]   location: class com.Corona.CoronaTrack.services.CoronaDataService\n\n       [ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[46,29] cannot find symbol\n\n       [ERROR]   symbol:   variable HttpClient\n\n       [ERROR]   location: class com.Corona.CoronaTrack.services.CoronaDataService\n\n       [ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[47,9] cannot find symbol\n\n       [ERROR]   symbol:   class HttpClient\n\n       [ERROR]   location: class com.Corona.CoronaTrack.services.CoronaDataService\n\n       [ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[47,30] cannot find symbol\n\n       [ERROR]   symbol:   variable HttpClient\n\n       [ERROR]   location: class com.Corona.CoronaTrack.services.CoronaDataService\n\n       [ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[48,9] cannot find symbol\n\n       [ERROR]   symbol:   class HttpRequest\n\n       [ERROR]   location: class com.Corona.CoronaTrack.services.CoronaDataService\n\n       [ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[48,30] cannot find symbol\n\n       [ERROR]   symbol:   variable HttpRequest\n\n       [ERROR]   location: class com.Corona.CoronaTrack.services.CoronaDataService\n\n       [ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[49,9] cannot find symbol\n\n       [ERROR]   symbol:   class HttpRequest\n\n       [ERROR]   location: class com.Corona.CoronaTrack.services.CoronaDataService\n\n       [ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[49,31] cannot find symbol\n\n       [ERROR]   symbol:   variable HttpRequest\n\n       [ERROR]   location: class com.Corona.CoronaTrack.services.CoronaDataService\n\n       [ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[51,9] cannot find symbol\n\n       [ERROR]   symbol:   class HttpResponse\n\n       [ERROR]   location: class com.Corona.CoronaTrack.services.CoronaDataService\n\n       [ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[51,76] package HttpResponse does not exist\n\n       [ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[52,9] cannot find symbol\n\n       [ERROR]   symbol:   class HttpResponse\n\n       [ERROR]   location: class com.Corona.CoronaTrack.services.CoronaDataService\n\n       [ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[52,78] package HttpResponse does not exist\n\n       [ERROR] -> [Help 1]\n\n       [ERROR] \n\n       [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.\n\n       [ERROR] Re-run Maven using the -X switch to enable full debug logging.\n\n       [ERROR] \n\n       [ERROR] For more information about the errors and possible solutions, please read the following articles:\n\n       [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException\n\n !     ERROR: Failed to build app with Maven\n\n       We're sorry this build is failing! If you can't find the issue in application code,\n\n       please submit a ticket so we can help: https://help.heroku.com/\n\n !     Push rejected, failed to compile Java app.\n\n !     Push failed \n\n
Run Code Online (Sandbox Code Playgroud)\n

这是它一直说有问题的位置

\n
package com.Corona.CoronaTrack.services;\n\n\nimport com.Corona.CoronaTrack.models.Stats;\nimport com.Corona.CoronaTrack.models.Stats2;\nimport org.apache.commons.csv.CSVFormat;\nimport org.apache.commons.csv.CSVRecord;\nimport org.springframework.scheduling.annotation.Scheduled;\nimport org.springframework.stereotype.Service;\n\nimport javax.annotation.PostConstruct;\nimport java.io.IOException;\nimport java.io.StringReader;\nimport java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\nimport java.util.ArrayList;\nimport java.util.List;\n\n@Service\npublic class CoronaDataService {\n\n    private static String VirusDataURL = "https://raw.githubusercontent.com/nytimes/covid-19-data/master/us-states.csv";\n    private static String VirusDataURL2= "https://raw.githubusercontent.com/nytimes/covid-19-data/master/us.csv";\n\n    private List<Stats> allStats = new ArrayList<>();\n\n    public List<Stats> getAllStats() {\n        return allStats;\n    }\n\n    private List<Stats2> allStats2 = new ArrayList<>();\n\n    public List<Stats2> getAllStats2() {\n        return allStats2;\n    }\n\n    @PostConstruct\n    @Scheduled(cron = "* * 1 * * *")\n    public void GetCornonaData() throws IOException, InterruptedException {\n        List<Stats> newStats = new ArrayList<>();\n        List<Stats2> newStats2 = new ArrayList<>();\n\n\n        HttpClient client = HttpClient.newHttpClient();\n        HttpClient client2 = HttpClient.newHttpClient();\n        HttpRequest request= HttpRequest.newBuilder().uri(URI.create(VirusDataURL)).build();\n        HttpRequest request2= HttpRequest.newBuilder().uri(URI.create(VirusDataURL2)).build();\n\n        HttpResponse<String> httpResponse=client.send(request, HttpResponse.BodyHandlers.ofString());\n        HttpResponse<String> httpResponse2=client.send(request2, HttpResponse.BodyHandlers.ofString());\n\n        StringReader  csvBody2 = new StringReader(httpResponse2.body());\n        Iterable<CSVRecord> records2 = CSVFormat.DEFAULT.withFirstRecordAsHeader().parse(csvBody2);\n        for (CSVRecord record2 : records2) {\n            Stats2 locationStat2 = new Stats2();\n            \n            locationStat2.setTotalAmountOfCases(record2.get(record2.size()-2));\n\n            \n            locationStat2.setTotalAmountOfDeaths(record2.get(record2.size()-1));\n           \n            newStats2.add(locationStat2);\n        }\n        this.allStats2 = newStats2;\n\n\n        StringReader  csvBody = new StringReader(httpResponse.body());\n        Iterable<CSVRecord> records = CSVFormat.DEFAULT.withFirstRecordAsHeader().parse(csvBody);\n        for (CSVRecord record : records) {\n            Stats locationStat = new Stats();\n            locationStat.setDate(record.get("date"));\n            locationStat.setState(record.get("state"));\n            locationStat.setCases(record.get("cases"));\n            locationStat.setDeaths(record.get("deaths"));\n            newStats.add(locationStat);\n        }\n        this.allStats = newStats;\n    }\n}\n\n
Run Code Online (Sandbox Code Playgroud)\n

我知道它\xe2\x80\x99s 不是最好的代码。这是我第一个使用 spring 的项目。如果您对部署我的项目的更好方法有任何建议,我将不胜感激。我很感激所提供的任何帮助,谢谢。

\n

Bep*_*e C 5

java.net.http已在 Java 11 中引入,您可能会在本地使用它。

Heroku 默认提供 Java 8 运行时,但是您可以设置所需的 Java 版本。system.properties在项目的根目录中创建一个文件,其中包含:

java.runtime.version=11
Run Code Online (Sandbox Code Playgroud)