[英]Heroku deployment build failure Java Spring project : package java.net.http does not exist
我一直在尝试在 Heroku 上部署 java spring 项目,但我一直收到此错误。 该项目是一个跟踪器,它使用在线 csv 文件中的一些数据并使用这些信息显示数据。 它还每天更新信息。 当我使用 http://localhost:8080/ 在本地托管它时,它工作正常。 这是错误消息。
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[15,21] package java.net.http does not exist
[ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[16,21] package java.net.http does not exist
[ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[17,21] package java.net.http does not exist
[ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[46,9] cannot find symbol
symbol: class HttpClient
location: class com.Corona.CoronaTrack.services.CoronaDataService
[ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[46,29] cannot find symbol
symbol: variable HttpClient
location: class com.Corona.CoronaTrack.services.CoronaDataService
[ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[47,9] cannot find symbol
symbol: class HttpClient
location: class com.Corona.CoronaTrack.services.CoronaDataService
[ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[47,30] cannot find symbol
symbol: variable HttpClient
location: class com.Corona.CoronaTrack.services.CoronaDataService
[ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[48,9] cannot find symbol
symbol: class HttpRequest
location: class com.Corona.CoronaTrack.services.CoronaDataService
[ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[48,30] cannot find symbol
symbol: variable HttpRequest
location: class com.Corona.CoronaTrack.services.CoronaDataService
[ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[49,9] cannot find symbol
symbol: class HttpRequest
location: class com.Corona.CoronaTrack.services.CoronaDataService
[ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[49,31] cannot find symbol
symbol: variable HttpRequest
location: class com.Corona.CoronaTrack.services.CoronaDataService
[ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[51,9] cannot find symbol
symbol: class HttpResponse
location: class com.Corona.CoronaTrack.services.CoronaDataService
[ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[51,76] package HttpResponse does not exist
[ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[52,9] cannot find symbol
symbol: class HttpResponse
location: class com.Corona.CoronaTrack.services.CoronaDataService
[ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[52,78] package HttpResponse does not exist
[INFO] 15 errors
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 12.179 s
[INFO] Finished at: 2020-09-20T05:56:34Z
[INFO] ------------------------------------------------------------------------
[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:
[ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[15,21] package java.net.http does not exist
[ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[16,21] package java.net.http does not exist
[ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[17,21] package java.net.http does not exist
[ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[46,9] cannot find symbol
[ERROR] symbol: class HttpClient
[ERROR] location: class com.Corona.CoronaTrack.services.CoronaDataService
[ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[46,29] cannot find symbol
[ERROR] symbol: variable HttpClient
[ERROR] location: class com.Corona.CoronaTrack.services.CoronaDataService
[ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[47,9] cannot find symbol
[ERROR] symbol: class HttpClient
[ERROR] location: class com.Corona.CoronaTrack.services.CoronaDataService
[ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[47,30] cannot find symbol
[ERROR] symbol: variable HttpClient
[ERROR] location: class com.Corona.CoronaTrack.services.CoronaDataService
[ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[48,9] cannot find symbol
[ERROR] symbol: class HttpRequest
[ERROR] location: class com.Corona.CoronaTrack.services.CoronaDataService
[ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[48,30] cannot find symbol
[ERROR] symbol: variable HttpRequest
[ERROR] location: class com.Corona.CoronaTrack.services.CoronaDataService
[ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[49,9] cannot find symbol
[ERROR] symbol: class HttpRequest
[ERROR] location: class com.Corona.CoronaTrack.services.CoronaDataService
[ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[49,31] cannot find symbol
[ERROR] symbol: variable HttpRequest
[ERROR] location: class com.Corona.CoronaTrack.services.CoronaDataService
[ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[51,9] cannot find symbol
[ERROR] symbol: class HttpResponse
[ERROR] location: class com.Corona.CoronaTrack.services.CoronaDataService
[ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[51,76] package HttpResponse does not exist
[ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[52,9] cannot find symbol
[ERROR] symbol: class HttpResponse
[ERROR] location: class com.Corona.CoronaTrack.services.CoronaDataService
[ERROR] /tmp/build_764c076e_/src/main/java/com/Corona/CoronaTrack/services/CoronaDataService.java:[52,78] package HttpResponse does not exist
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
! ERROR: Failed to build app with Maven
We're sorry this build is failing! If you can't find the issue in application code,
please submit a ticket so we can help: https://help.heroku.com/
! Push rejected, failed to compile Java app.
! Push failed
这是它一直说有问题的位置
package com.Corona.CoronaTrack.services;
import com.Corona.CoronaTrack.models.Stats;
import com.Corona.CoronaTrack.models.Stats2;
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVRecord;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
import java.io.IOException;
import java.io.StringReader;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.ArrayList;
import java.util.List;
@Service
public class CoronaDataService {
private static String VirusDataURL = "https://raw.githubusercontent.com/nytimes/covid-19-data/master/us-states.csv";
private static String VirusDataURL2= "https://raw.githubusercontent.com/nytimes/covid-19-data/master/us.csv";
private List<Stats> allStats = new ArrayList<>();
public List<Stats> getAllStats() {
return allStats;
}
private List<Stats2> allStats2 = new ArrayList<>();
public List<Stats2> getAllStats2() {
return allStats2;
}
@PostConstruct
@Scheduled(cron = "* * 1 * * *")
public void GetCornonaData() throws IOException, InterruptedException {
List<Stats> newStats = new ArrayList<>();
List<Stats2> newStats2 = new ArrayList<>();
HttpClient client = HttpClient.newHttpClient();
HttpClient client2 = HttpClient.newHttpClient();
HttpRequest request= HttpRequest.newBuilder().uri(URI.create(VirusDataURL)).build();
HttpRequest request2= HttpRequest.newBuilder().uri(URI.create(VirusDataURL2)).build();
HttpResponse<String> httpResponse=client.send(request, HttpResponse.BodyHandlers.ofString());
HttpResponse<String> httpResponse2=client.send(request2, HttpResponse.BodyHandlers.ofString());
StringReader csvBody2 = new StringReader(httpResponse2.body());
Iterable<CSVRecord> records2 = CSVFormat.DEFAULT.withFirstRecordAsHeader().parse(csvBody2);
for (CSVRecord record2 : records2) {
Stats2 locationStat2 = new Stats2();
locationStat2.setTotalAmountOfCases(record2.get(record2.size()-2));
locationStat2.setTotalAmountOfDeaths(record2.get(record2.size()-1));
newStats2.add(locationStat2);
}
this.allStats2 = newStats2;
StringReader csvBody = new StringReader(httpResponse.body());
Iterable<CSVRecord> records = CSVFormat.DEFAULT.withFirstRecordAsHeader().parse(csvBody);
for (CSVRecord record : records) {
Stats locationStat = new Stats();
locationStat.setDate(record.get("date"));
locationStat.setState(record.get("state"));
locationStat.setCases(record.get("cases"));
locationStat.setDeaths(record.get("deaths"));
newStats.add(locationStat);
}
this.allStats = newStats;
}
}
我知道这不是最好的代码。 这是我使用 spring 的第一个项目。如果您对部署我的项目的更好方法有任何建议,我将不胜感激。 感谢您提供的任何帮助,谢谢。
java.net.http
已在 Java 11 中引入,您可能在本地使用。
Heroku 默认提供 Java 8 运行时,但是您可以设置所需的 Java 版本。 在项目的根目录中创建一个文件system.properties
,其中包含:
java.runtime.version=11
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.