【问题标题】:Deploying WAR File in Tomcat (paths)在 Tomcat 中部署 WAR 文件(路径)
【发布时间】:2019-03-21 09:12:49
【问题描述】:

我正在 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 的路径(这只使用路径作为字符串)?

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

我应该做错什么?

提前致谢:)

【问题讨论】:

标签: java maven tomcat web filepath


【解决方案1】:

确保您的 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())

【讨论】:

  • 使用 getResourceAsStream 正是stackoverflow.com/questions/20389255/… 中的答案所建议的,重复的问题不值得重复的答案,
  • @Pino 由于 OP 已经在他的编辑中使用了 getResourceAsStream ,所以其他一些问题是错误的,我的猜测是该文件不包含在 WAR 中。
  • 是的,现在我已经看到了编辑,但不清楚 OP 如何使用 getResourceAsStream() 的结果。也许他应该更好地阅读该帖子中已有的示例。
猜你喜欢
  • 2021-11-14
  • 2017-01-30
  • 1970-01-01
  • 2017-11-08
  • 2020-12-03
  • 1970-01-01
  • 2010-09-13
  • 2012-07-29
  • 2012-12-16
相关资源
最近更新 更多