Re: browsing htm page inside JAR file
Yes, I agree it is possible with JEditorPane. I thought John was
referring to using the actual browser. Sorry for the confusion.
On Sep 6, 9:18 pm, Arne Vajh=F8j <a...@vajhoej.dk> wrote:
Mike wrote:
On Sep 6, 6:37 pm, "John B. Matthews" <nos...@nospam.invalid> wrote:
In article <48c2de71$0$90273$14726...@news.sunsite.dk>,
Arne Vajh=F8j <a...@vajhoej.dk> wrote:
Mike wrote:
I'm trying to access an =B3html=B2 page inside a JAR file. Then, I w=
ant to
display it using Java's Desktop.getDesktop().browse (URI). In oth=
er
words, I want to display it using the user's default browser. I was
able to get an URL a(jar:file...) and then convert it to an URI but
Java won't launch and open the default browser (Internet Explore
specifically) with the URI. Can someone show me Java code doing this=
?
A classloader can load content from inside a jar file.
A standard browser can not.
So it is not possible. You need to extract the file first.
Alternatively: you can display the html from the jar in a JTextPane or
OK. See my next comment.
JEditorPane; or you can read an absolute, browsable URL string from th=
e
jar, construct the corresponding URI, and browse that.
That's the part that doesn't work. Can you show me Java code that does
that. I don't think is possible.
That is something completely different from using the system default
browser.
It is possible.
The following works.
C:\>jar tvf showhtml.jar
57 Sat Sep 06 21:16:18 EDT 2008 META-INF/MANIFEST.MF
49 Sat Sep 06 20:58:26 EDT 2008 september/text.html
603 Sat Sep 06 21:15:48 EDT 2008 september/ShowHtml$1.class
2250 Sat Sep 06 21:15:48 EDT 2008 september/ShowHtml.class
package september;
import java.awt.BorderLayout;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
public class ShowHtml extends JFrame {
private static String load(InputStream is) throws IOException =
{
StringBuffer sb = new StringBuffer("");
BufferedReader in = new BufferedReader(new InputStre=
amReader(is));
String line;
while((line = in.readLine()) != null) {
sb.append(line);
sb.append(' ');
}
return sb.toString();
}
private JEditorPane html;
public ShowHtml() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getContentPane().setLayout(new BorderLayout());
html = new JEditorPane();
html.setContentType("text/html");
try {
html.setText(load(getClass().getResourceAsStream("/september/text.html"))=
);
} catch(IOException ex) {
html.setText("**** Can not find HTML resource =
****");
}
getContentPane().add(html, BorderLayout.CENTER);
pack();
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame f = new ShowHtml();
f.setVisible(true);
}
});
}
}
Arne