【发布时间】:2011-06-26 21:53:45
【问题描述】:
我在 RAD 中收到以下错误:
java.net.URISyntaxException: Illegal character in path at index 16: file:/E:/Program Files/IBM/SDP/runtimes/base......
能否请您告诉我错误是什么以及如何解决?
【问题讨论】:
-
尝试用 '%20' 替换空格
标签: java
我在 RAD 中收到以下错误:
java.net.URISyntaxException: Illegal character in path at index 16: file:/E:/Program Files/IBM/SDP/runtimes/base......
能否请您告诉我错误是什么以及如何解决?
【问题讨论】:
标签: java
索引 16 处有一个非法字符。我会说它不喜欢路径中的空格。你可以percent encode空格等特殊字符。在这种情况下,将其替换为 %20。
我上面链接的问题建议使用URLEncoder:
String thePath = "file://E:/Program Files/IBM/SDP/runtimes/base";
thePath = URLEncoder.encode(thePath, "UTF-8");
【讨论】:
我在使用 Bing 地图 API 时遇到了同样的问题。 URLEncoder 只会让事情变得更糟,但 replaceAll(" ","%20"); 成功了。
【讨论】:
[?
安装目录不能有空间。 重新安装软件会更正它
【讨论】:
我遇到了 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 );
【讨论】:
你试过了吗?
new File("<PATH OF YOUR FILE>").toURI().toString();
【讨论】:
如果 jdk 出现此错误,请使用:
progra~1 代替路径示例中的程序文件:
c:/progra~1/java instead of c:/program files/java
在java代码中总是避免空格是可以的.....
它可以用于程序文件中的所有东西,否则在路径的开头和en处加上引号
"c:/..../"
【讨论】:
我今天收到了这个错误,与上述所有答案不同,我的错误是由于新的原因造成的。
在我的日语翻译 strings.xml 文件中,我删除了一个必需的字符串。
android 是如何将所有其他字符串混合在一起的,这会导致错误。
解决方案是包含我正常的英文 strings.xml 中的所有字符串
包括那些没有翻译成日语的字符串。
【讨论】:
空格也有同样的问题。 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());
【讨论】:
file://c:/..,但正如您在此处发布的那样,它是file:/c:/...(只有一个斜线)