aayushi soni
aayushi soni

Reputation: 341

java.net.URISyntaxException

I have get this exception. but this exception is not reproduced again. I want to get the cause of this

Exception Caught while Checking tag in XMLjava.net.URISyntaxException:
Illegal character in opaque part at index 2:
C:\Documents and Settings\All Users\.SF\config\sd.xml
stacktrace net.sf.saxon.trans.XPathException.

Why this exception occured. How to deal with so it will not reproduce.

Upvotes: 34

Views: 86054

Answers (7)

Michael
Michael

Reputation: 1

I was getting a similar error. I was using [JavaFX] FileChooser to return a chosen file and with this file I was trying to set an instance of MediaPlayer with the selectedFile passed to it. To resolve the error I added selectedFile.toURI().toString() and passed that to MediaPlayer and now I can choose any audio file located anywhere on my system.

Upvotes: 0

user924
user924

Reputation: 12225

it doesn't like spaces as well and it has to be / instead of \ or `\ or //

zipFilePath = "C:/test/v";

Upvotes: 0

Stephen C
Stephen C

Reputation: 719239

A valid URI does not contain backslashes, and if it contains a : then the characters before the first : must be a "protocol".

Basically "C:\Documents and Settings\All Users\.SF\config\sd.xml" is a pathname, and not a valid URI.

If you want to turn a pathname into a "file:" URI, then do the following:

File f = new File("C:\Documents and Settings\All Users\.SF\config\sd.xml");
URI u = f.toURI();

This is the simplest, and most reliable and portable way to turn a pathname into a valid URI in Java. It should work on Windows, Mac, Linux and any other platform that supports Java. (Other solutions that involve using string bashing on a pathname are not portable.)

But you need to realize that "file:" URIs have a number of caveats, as described in the javadocs for the File.toURI() method. For example, a "file:" URI created on one machine usually denotes a different resource (or no resource at all) on another machine.

Upvotes: 64

sampopes
sampopes

Reputation: 2696

It needs a complete uri with type/protocol e.g

file:/C:/Users/Sumit/Desktop/s%20folder/SAMPLETEXT.txt


File file = new File("C:/Users/Sumit/Desktop/s folder/SAMPLETEXT.txt");
file.toURI();//This will return the same string for you.

I will rather use direct string to avoid creating extra file object.

Upvotes: 1

Ankireddy Polu
Ankireddy Polu

Reputation: 1876

The root cause for this is file path contains the forward slashes instead of backward slashes in windows.

Try like this to resolve the problem:

"file:" + string.replace("\\", "/");  

Upvotes: 12

britt
britt

Reputation: 83

I had the same "opaque" error while passing a URI on the command line to a script. This was on windows. I had to use forward slashes, NOT backslashes. This resolved it for me.

Upvotes: 0

sizu
sizu

Reputation: 89

You must have the string like so:

String windowsPath = file:/C:/Users/sizu/myFile.txt;
URI uri = new URI(windowsPath);
File file = new File(uri);

Usually, people do something like this:

String windowsPath = file:C:/Users/sizu/myFile.txt;
URI uri = new URI(windowsPath);
File file = new File(uri);

or something like this:

String windowsPath = file:C:\Users\sizu\myFile.txt;
URI uri = new URI(windowsPath);
File file = new File(uri);

Upvotes: 8

Related Questions