Развертывание проекта Tomcat на веб-сервере, проблема с файлом
:) Итак, я наконец-то купил свой хостинг и пытаюсь развернуть на нем свой проект Tomcat. Сервер mochahost.com, поддержка JSP и Tomcat включена. Мой проект работает нормально на локальной машине, однако, когда я развертываю его на веб-сервере, он говорит:
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: Exception in JSP: /List/index.jsp:38
35: <br>
36: <%
37: String file = application.getRealPath("/") + "default_list.txt";
38: FileReader filereader = new FileReader(file);
39: BufferedReader br = new BufferedReader(filereader);
40: String eachLine = br.readLine();
41: while (eachLine != null) {
Что может быть не так? Я думаю, что он не может получить доступ к файлу, но как мне это исправить? Спасибо!
Обновление: проблема была вызвана путём к серверу, решаемым с помощью метода Server.MapPath.
2 ответа
Да, это проблема с попыткой использовать пути к файлам в веб-приложениях: вы не можете знать, где вы будете развернуты.
У вас есть несколько вещей, которые вы можете попробовать:
- Запишите реальный путь к журналу, чтобы вы могли его увидеть. Как еще вы можете знать, что делать?
- Читать файлы из
CLASSPATH
с помощьюgetResourceAsStream()
из контекста сервлета. - "default_list" предполагает, что это справочные данные. Вы можете попробовать встроить его как JSON или XML, так как он постоянный.
- Вы не должны использовать код скриптлета в JSP. Пусть сервлет передает эти данные в JSP.
- Выучи JSTL. Вы будете рады, что сделали.
- Поместите справочные данные в базу данных и прочитайте их оттуда.
Программа прерывается на строке 38. Это означает, что проблема заключается в пути, который вы получаете из метода getRealPath. Я предлагаю вам проанализировать, какой путь вы получаете с помощью этого метода, и имеет ли он смысл (то есть, если текстовый файл, который вы пытаетесь получить, находится по этому пути).