2011-02-14 15 views
28

estoy recibiendo el siguiente error en RAD:carácter ilegal de ruta en el índice 16

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

Podría por favor hágamelo saber lo que es el error y cómo resolverlo?

+1

Ver [? Cómo resolver este carácter ilegal excepción en ruta] (http://stackoverflow.com/questions/3753852/how- to-solve-this-exception-illegal-character-in-path) –

+1

intente reemplazar los espacios con '% 20' – nothrow

+2

Vea la solución general en http://stackoverflow.com/questions/749709/how-to-deal-with -the-urisyntaxexception/15570670 # 15570670 – GKislin

Respuesta

42

Hay un personaje ilegal en el índice 16. Diría que no le gusta el espacio en el camino. Puede percent encode caracteres especiales como espacios. Reemplácelo con un% 20 en este caso.

La pregunta he vinculado al anterior sugiere el uso URLEncoder:

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

file: /// is files. Tenga en cuenta los tres –

+10

Hm ... realmente no funciona: el espacio se reemplaza con el signo más, no con% 20, y también se destruyen todas las barras ... Vea aquí: http://stackoverflow.com/ questions/4737841/urlencoder-not-able-to-translate-space-character –

+1

No use URLEncoder como se describe a continuación por John, solo empeora las cosas. –

17

me encontré con lo mismo con la API de Bing Map. URLEncoder acaba de empeorar las cosas, pero un replaceAll(" ","%20"); hizo el truco.

+0

¿Quizás hay otros caracteres que necesitan ser codificados? Me gusta '['? –

+0

Tuve un espacio adicional al final de la URL por accidente. Eliminarlo solucionó el problema. – Henry

1

el directorio de instalación no puede tener espacio. reinstalar el software lo corregirá

+0

esa es una forma de resolverlo, pero creo que estabas siendo sarcástico, ¿verdad? – Pierre

2

Tuve un problema similar para xml. Solo pasando el error y la solución (versión editada de Jonathon).

Código:

HttpGet xmlGet = new HttpGet(xmlContent); 

formato XML:

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

error:

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) 

Solución No exactamente perfecta: (error desapareció para esa instancia)

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

idea de lo que debería estar haciendo? Se acaba de borrar pasado, pero tuvo un problema al hacer esto

HttpResponse response = httpclient.execute(xmlGet); 
5

¿Usted intentó esto?

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

Si este error se produce con el uso de JDK esto:

progra ~ 1 en lugar de archivos de programa en la ruta de ejemplo:

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

Será bien siempre evitar espacio en código Java .....

se puede utilizar para todo en los archivos de programa, de lo contrario ponga comillas al principio y el en de la ruta

"c: /..../"

0

Recibí este error hoy y, a diferencia de todas las respuestas anteriores, mi error se debe a un motivo nuevo.

En mi traducción al japonés del archivo strings.xml, había eliminado una cadena requerida.

De alguna manera, android mezcló todas las demás cadenas y esto causó un error.

La solución fue la de incluir todas las cuerdas de mi normal, Inglés strings.xml

incluyendo aquellas cadenas que no se tradujeron a japonés.

0

Tenía el mismo problema con los espacios. Combinación de URL y URI resolvió:

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

* Fuente: https://stackoverflow.com/a/749829/435605

+0

Mi problema era que estaba usando 'file: // c:/..', pero como lo publicaste aquí es 'file:/c:/...' (solo una barra inclinada) – ST7

Cuestiones relacionadas