我在RAD中收到以下错误:
java.net.URISyntaxException: Illegal character in path at index 16: file:/E:/Program Files/IBM/SDP/runtimes/base......
您能否告诉我错误是什么以及如何解决?
答案 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());
答案 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中的所有字符串
包括那些没有翻译成日文的字符串。