我正在Tomcat中为我开发的Web应用程序部署WAR文件(这是我第一次这样做)。 问题是在我部署应用程序时找不到资源。
我正在将文件(例如CSV文件)保存在项目的以下文件夹中:
"src/main/resources/diseases.csv"
当我在tomcat中部署项目时,tomcat给我这个错误:
"org.apache.spark.sql.AnalysisException: Path does not exist: file:/opt/tomcat/apache-tomcat-9.0.16/bin/src/main/resources/conenfermedad.csv;"
这是我遇到错误的代码行:
String dataPred = thalg.randtrp("src/main/resources/conenfermedad.csv",
"src/main/resources/outWekaEnfermedad.arff");
编辑: 我一直在尝试不同的解决方案,但是我遇到了同样的问题,因为如果我使用InputStream,如何获取使用dataFrameReader的路径(仅将路径用作String)?
InputStream is = getClass().getResourceAsStream(In);
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
//InputStream is = getClass().getResourceAsStream(In);
final DataFrameReader dataFrameReader = sparkSession.read().option("header", true);
final Dataset<Row> trainingData = dataFrameReader.csv(In).toDF("IDPatient", "ECG_EKG", "Temp",
"SPO2Min", "SPO2Max", "BPMmin", "BPMmax", "BPMavg", "SYS", "DIA", "EDAmin", "EDAmax", "EDAavg", "Disease");
// con "*.csv" para que lea todo el directorio
我该怎么办?
预先感谢:)
答案 0 :(得分:0)
确保您的CSV文件包含在您的WAR文件中。从技术上讲,由于WAR文件只是一个ZIP文件,因此您可以使用任何ZIP程序进行检查。
如果您使用的是Maven,则需要明确包含它:
<build>
...
<resources>
<resource>
<filtering>true</filtering>
<directory>src/main/resources</directory>
<includes>
<include>diseases.csv</include>
</includes>
</resource>
</resources>
...
</build>
如果不需要替换占位符,可以将 Filtering
设置为false(或忽略)。在include
标签中,您还可以使用wildcards。
然后您可以像这样使用csv文件:
new InputStreamReader(getClass().getResourceAsStream("/diseases.csv"), StandardCharsets.UTF_8.name())