java.net.URISyntaxException - PullRequest
       0

java.net.URISyntaxException

21 голосов
/ 18 мая 2010

Я получил это исключение. но это исключение не воспроизводится снова. Я хочу выяснить причину этого

Exception Caught while Checking tag in XMLjava.net.URISyntaxException:
Illegal character in opaque part at index 2:
C:\Documents and Settings\All Users\.SF\config\sd.xml
stacktrace net.sf.saxon.trans.XPathException.

Почему произошло это исключение. Как бороться с тем, чтобы он не воспроизводил.

Ответы [ 5 ]

40 голосов
/ 18 мая 2010

В основном "C:\Documents and Settings\All Users\.SF\config\sd.xml" - это путь, а не действительный URI. Если вы хотите превратить путь в URI «file:», то выполните следующие действия:

File f = new File("C:\Documents and Settings\All Users\.SF\config\sd.xml");
URI u = f.toURI();

Это самый простой, самый надежный и переносимый способ превратить имя пути в действительный URI в Java.

Но вы должны понимать, что URI "file:" имеют ряд предостережений, как описано в javadocs для метода File.toURI(). Например, URI «file:», созданный на одном компьютере, обычно обозначает другой ресурс (или вообще никакого ресурса) на другом компьютере.

11 голосов
/ 22 июля 2014

Основной причиной этого является то, что путь к файлу содержит прямую косую черту вместо обратной косой черты в Windows.

Попробуйте решить эту проблему следующим образом:

"file:" + string.replace("\\", "/");  
5 голосов
/ 17 сентября 2011

У вас должна быть такая строка:

String windowsPath = file:/C:/Users/sizu/myFile.txt;
URI uri = new URI(windowsPath);
File file = new File(uri);

Обычно люди делают что-то вроде этого:

String windowsPath = file:C:/Users/sizu/myFile.txt;
URI uri = new URI(windowsPath);
File file = new File(uri);

или как-то так:

String windowsPath = file:C:\Users\sizu\myFile.txt;
URI uri = new URI(windowsPath);
File file = new File(uri);
0 голосов
/ 02 сентября 2017

Требуется полный URI с типом / протоколом например,

file:/C:/Users/Sumit/Desktop/s%20folder/SAMPLETEXT.txt


File file = new File("C:/Users/Sumit/Desktop/s folder/SAMPLETEXT.txt");
file.toURI();//This will return the same string for you.

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

0 голосов
/ 23 мая 2014

У меня была такая же "непрозрачная" ошибка при передаче URI из командной строки в скрипт. Это было на окнах. Я должен был использовать прямые, а не обратные слеши. Это решило это для меня.

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