Encontré la solución en esta página:
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6780505
Con estas funciones ya funciona:
Código:
Here is a workaround
//launch file
public void launchFile(File file)
{
if(!Desktop.isDesktopSupported()) return;
Desktop dt = Desktop.getDesktop();
try
{
dt.open(file);
} catch (IOException ex)
{
//this is sometimes necessary with files on other servers ie \\xxx\xxx.xls
launchFile(file.getPath());
}
}
//this can launch both local and remote files
public void launchFile(String filePath)
{
if(filePath == null || filePath.trim().length() == 0) return;
if(!Desktop.isDesktopSupported()) return;
Desktop dt = Desktop.getDesktop();
try
{
dt.browse(getFileURI(filePath));
} catch (Exception ex)
{
ex.printStackTrace();
}
}
//generate uri according to the filePath
private URI getFileURI(String filePath)
{
URI uri = null;
filePath = filePath.trim();
if(filePath.indexOf("http") == 0 || filePath.indexOf("\\") == 0)
{
if(filePath.indexOf("\\") == 0) filePath = "file:" + filePath;
try
{
filePath = filePath.replaceAll(" ", "%20");
URL url = new URL(filePath);
uri = url.toURI();
} catch (MalformedURLException ex)
{
ex.printStackTrace();
}
catch (URISyntaxException ex)
{
ex.printStackTrace();
}
}
else
{
File file = new File(filePath);
uri = file.toURI();
}
return uri;
}
Luego es sollo llamar a la funcion y pasarle el parametro:
Código:
launchFile("\\\\192.168.1.4\\carpeta con espacios\\archivo con espacios.pdf");
Tal vez le sirva a alguien, gracias.