索引16处路径中的非法字符

时间:2011-02-14 12:48:12

标签: java

我在RAD中收到以下错误:

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

您能否告诉我错误是什么以及如何解决?

8 个答案:

答案 0 :(得分:50)

索引16处有一个非法字符。我会说它不喜欢路径中的空格。你可以percent encode像空格这样的特殊字符。在这种情况下,请用%20替换它。

我上面提到的问题建议使用URLEncoder

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

答案 1 :(得分:21)

我使用Bing Map API遇到了同样的问题。 URLEncoder只是让事情变得更糟,但replaceAll(" ","%20");做了伎俩。

答案 2 :(得分:9)

你试过这个吗?

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

答案 3 :(得分:2)

我对xml 有一个类似的问题。只是传递错误和解决方案(编辑Jonathon版本)。

<强>代码:

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 );

答案 4 :(得分:1)

安装目录不能有空间。 重新安装软件将纠正它

答案 5 :(得分:1)

空间有同样的问题。 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

答案 6 :(得分:0)

如果jdk发生此错误,请使用:

progra~1而不是路径示例中的程序文​​件:

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

总是可以避免java代码中的空间.....

它可以用于程序文件中的所有内容,否则将引号放在路径的开头和en

&#34; C:/..../&# 34;

答案 7 :(得分:0)

我今天收到此错误,与上述所有答案不同,我的错误是由于一个新原因。

在我的日语翻译strings.xml文件中,我删除了一个必需的字符串。

android如何混淆所有其他字符串,这导致错误。

解决方案是包括我的普通英语strings.xml中的所有字符串

包括那些没有翻译成日文的字符串。