it-swarm-ru.tech

Недопустимый символ в пути по индексу 16

Я получаю следующую ошибку в RAD:

Java.net.URISyntaxException: Illegal character in path at index 16: file:/E:/Program Files/IBM/SDP/runtimes/base......

Не могли бы вы сообщить мне, в чем заключается ошибка и как ее устранить?

33
Srinivasan

В индексе 16 есть недопустимый символ. Я бы сказал, что ему не нравится пробел в пути. Вы можете процентов кодировать специальные символы, такие как пробелы. Замените его на% 20 в этом случае.

Вопрос, на который я ссылался выше, предлагает использовать URLEncoder :

String thePath = "file://E:/Program Files/IBM/SDP/runtimes/base";
thePath = URLEncoder.encode(thePath, "UTF-8"); 
48
Jonathon Faust

Я столкнулся с тем же с API Bing Map. URLEncoder только усугубил ситуацию, но replaceAll(" ","%20"); сделала свое дело.

20
John

Ты пробовал это?

new File("<PATH OF YOUR FILE>").toURI().toString();
9
ceklock

У меня была аналогичная проблема для XML . Просто передавая ошибку и решение (отредактированная версия Джонатона).

Код:

HttpGet xmlGet = new HttpGet( xmlContent );

Формат XML:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<employee>
    <code>CA</code>
    <name>Cath</name>
    <salary>300</salary>
</employee>

Ошибка:

Java.lang.IllegalArgumentException: Illegal character in path at index 0: <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<contents>
    <portalarea>CA</portalarea>
    <portalsubarea>Cath</portalsubarea>
    <direction>Navigator</direction>
</contents>
    at Java.net.URI.create(URI.Java:859)
    at org.Apache.http.client.methods.HttpGet.<init>(HttpGet.Java:69)
    at de.vogella.jersey.first.Hello.validate(Hello.Java:56)

Не совсем идеальное решение: (ошибка исчезла для этого экземпляра)

String theXml = URLEncoder.encode( xmlContent, "UTF-8" );
HttpGet xmlGet = new HttpGet( theXml );

Есть идеи, что я должен делать? Это только что пройдено прошло, но возникли проблемы при этом 

HttpResponse response = httpclient.execute( xmlGet );
2
Mad-D

Была такая же проблема с пробелами. Сочетание URL и URI решило это:

URL url = new URL("file:/E:/Program Files/IBM/SDP/runtimes/base");
URI uri = new URI(url.getProtocol(), url.getUserInfo(), url.getHost(), url.getPort(), url.getPath(), url.getQuery(), url.getRef());

* Источник: https://stackoverflow.com/a/749829/435605

1
AlikElzin-kilaka

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

1
deskmore

Я получил эту ошибку сегодня, и, в отличие от всех приведенных выше ответов, моя ошибка произошла по новой причине.

В моем файле strings.xml японского перевода я удалил обязательную строку.

Примерно так, как Android перепутал все остальные строки, и это вызвало ошибку.

Решением было включить все строки из моего обычного английского strings.xml 

Включая те строки, которые не были переведены на японский язык.

0
Pritesh Desai

Если эта ошибка происходит с JDK, используйте это:

progra ~ 1 вместо программных файлов в примере пути:

 c:/progra~1/Java instead of c:/program files/Java

Это будет нормально, всегда избегайте пробелов в коде Java .....

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

"C: /..../"

0
cyril