What I have done so far is :
/** Default location of help files folder */
private static final String DEFAULT_PATH = "../../../../resources/files/help/";
/** A 404 error file */
private static final String ERROR_404 = "../../../../resources/files/help/404.html";
/**
* @param fileName
* @return The URL of file, if found at default location, otherwise a 404 error page URL.
*/
public static URL getURL(String fileName) throws MalformedURLException{
URL url = (new File(ERROR_404)).toURI().toURL();
System.out.println(url);
url = (new File(DEFAULT_PATH + fileName)).toURI().toURL();
System.out.println(url);
return url;
}
Output:
file:/H:/My%20Project/Project%20Name%20Module/../../../../resources/files/help/404.html file:/H:/My%20Project/Project%20Name%20Module/../../../../resources/files/help/plazaCode.html
Folder Hierarchy in the JAR created through NetBeans:
I am on Windows 7, JDK 7.
UPDATE:
Actually I want this URL
for a JTextPane
to show a HTML page by method:
textPane.setPage(URL url);
Can I have any better solution than this? and with the same Folder Heirarchy.. ?
When you create a File in this way you will get a relative file (and therefore a relative URL). To get a absolute URL from that path you need to get an absolute File first. Try this:
(EDIT: After you JTextPane information above) I haven't ever tried this, so I have no clue on why that's not working. But its a different question, you should ask a new Question.
404.html
since this is an application resource, it will probably end up embedded in a Jar.File
object.URL getURL(String fileName)
To help avoid confusion, change that toURL getURL(String resourceName)
.Class.getResource(String)
much as discussed on your previous questions./
which effectively means 'look for this resource, from the root of the run-time class-path'.So that
String
might read (adjusting the rest of the code as already advised):You can use
URL url = getClass().getResource("...")
. Probably "/files/help/404.html".