From a Java program, I need to launch the default browser on a local HTML file, pointed to an anchor inside the file. In Java SE 6, the java.awt.Desktop.browse method will
For Windows only, you could try
System.exec("cmd.exe start file:///C:/foo/bar.html#anchor")
I just solved this another way, because no amount of quoting or spaces in any of these examples worked for me.
1 Detect if the file URI has a anchor or query string
2 If so, create a temp file File tmpfile = File.createTempFile("apphelp", ".html")
with a meta-redirect to the actual file URI I desire:
<html><head>
<meta http-equiv="refresh" content="0;url=help.html#set_filter" />
</head></html>
3 Execute the local rundll command using new temporary URI:
Runtime.getRuntime().exec(
"rundll32 url.dll,FileProtocolHandler \""
+tmpfile.toURI().toString()+ "\"");
I hope this works for you!
Solution on Windows is:
rundll32 URL.dll, FileProtocolHandler "file:///x:/temp/fragtest.htm#frag"
Mind the quotes!!!
rundll32 URL.dll, FileProtocolHandler file:///x:/temp/fragtest.htm#frag does work as expected.
You could try using BrowserLauncher2. It's a small and self-contained cross-platform library to open the default browser. It handles anchors perfectly.
I've done some investigation on this item here - note that opening cmd
and typing start file:///c:/temp/test.html#anchor
also doesn't work.
I think the only thing that actually works is to call a browser manually (or use a third-party tool that does this).
On Windows, you always have Internet Explorer, so you could call Runtime.getRuntime().exec("cmd.exe start iexplore " + myURL)
if you really don't want to find iexplore.exe yourself - but this doesn't always work either.