Развертывание WAR-файла в Tomcat (пути) - PullRequest
0 голосов
/ 21 марта 2019

Я развертываю WAR-файл в Tomcat для веб-приложения (я впервые это делаю), которое я разработал. Проблема возникает, когда я развертываю приложение, и ресурсы не могут быть найдены.

Я сохраняю файлы (например, файл 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");

EDIT : Я пробовал разные решения, но у меня та же проблема, потому что если я использую 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

Что я должен делать не так?

Заранее спасибо:)

1 Ответ

0 голосов
/ 21 марта 2019

Убедитесь, что ваш 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 вы также можете использовать подстановочные знаки .

И тогда вы можете использовать CSV-файл следующим образом:

new InputStreamReader(getClass().getResourceAsStream("/diseases.csv"), StandardCharsets.UTF_8.name())
...