Ошибка файла не найдена - PullRequest
1 голос
/ 19 июня 2010

Я передал файл в библиотеку, и библиотека выдает ошибку FileNotFound, как показано:

javax.xml.transform.TransformerException: java.io.FileNotFoundException: file:\C:\Users\Oroma\workspace\IndividualProject_JINQS\WebContent\WEB-INF\classes\presentationlayer\utility\mappings\jmt\networkModel.xml (The filename, directory name, or volume label syntax is incorrect)

Файл отправляется с использованием этого метода:

 private URI getFileLocation(String fName) throws URISyntaxException {
    return this.getClass().getResource("utility/mappings/jmt/"+ fName).toURI();
 }

Таким образом, если файл не существует, я получу нулевой указатель, прежде чем отправить файл в библиотеку JSIM.

Я смотрю на сообщение об ошибке: (The filename, directory name, or volume label syntax is incorrect).Глядя на полный путь к файлу, я не вижу никаких специальных символов.

Кто-нибудь знает, что может быть причиной ошибки?

РЕДАКТИРОВАТЬ: вызов метода для другой библиотеки требует отправки файла:

SolverDispatcher solver = new SolverDispatcher();
File networkModel = new File(getFileLocation("networkModel.xml"));
solver.solve(networkModel);

Ответы [ 4 ]

0 голосов
/ 28 января 2011

Я бы попытался получить некоторую отладочную информацию, возможно, добавив несколько отпечатков

    private URI getFileLocation(String fName) throws URISyntaxException {
        URL url = this.getClass().getResource("utility/mappings/jmt/"+ fName);
        System.out.printf("url: %s%n", url);
        return url.toURI();
     }

и

    SolverDispatcher solver = new SolverDispatcher();
    URI uri = start.getFileLocation("networkModel.xml");
    System.out.printf("uri: %s%n", uri);
    File networkModel= new File(uri);
    System.out.printf("file: %s - %s%n", networkModel, networkModel.exists()); 
    solver.solve(networkModel);

Последний вывод (файл) должен не иметьчасть протокола "file: \".

0 голосов
/ 19 июня 2010

Я могу ошибаться. Я просто догадываюсь. Обычно абсолютный URL-адрес файла начинается с

file:///

В исключении я вижу это как

file:\
0 голосов
/ 28 января 2011

Прямого преобразования из Resource в File нет. Вы можете попробовать удалить часть "file: \" из пути, но она может работать не во всех случаях, т.е. при работе в качестве апплета, поскольку вы не можете открыть объект File с моделью безопасности на месте.

Лучший способ прочитать содержимое ресурса - получить InputStream:

private InputStream getFileLocation(String fName) throws URISyntaxException {
    return this.getClass().getResourceAsStream("utility/mappings/jmt/"+ fName);
}

SolverDispatcher solver = new SolverDispatcher();
InputStream networkModelStream = getFileLocation("networkModel.xml");
solver.solve(networkModelStream);
0 голосов
/ 19 июня 2010

Ожидает ли метод, который вы вызываете, URI или имя файла? То есть он ожидает этот файл: в начале?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...