简体   繁体   中英

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.

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 theFile.toURI() method. For example, a "file:" URI created on one machine usually denotes a different resource (or no resource at all) on another machine.

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("\\", "/");  

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

It needs a complete uri with type/protocol eg

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.

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.

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM