Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Java > html contained in jar

Reply
Thread Tools

html contained in jar

 
 
johnmmcparland
Guest
Posts: n/a
 
      10-09-2006
Hi all,

this seems like a commonly asked question, but so far I haven't found
an answer that works.

I wish to have a jar file which by containing a class which extends
JEditorPane and some html files, will display the html files which are
located inside the jar.

At the moment, I have a jar file with the following contents;

META-INF/
META-INF/MANIFEST.MF
help/
help/index.html
ui/
ui/Browser$HTMLBrowser$LinkListener.class
ui/Browser$HTMLBrowser.class
ui/Browser.class
ui/Browser.java

The Browser inner class HTMLBrowser extends JEditorPane to display html
(in this case help/index.html).

The code is below,

package ui;

import java.io.File;
import java.io.IOException;
import java.net.URL;

import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;

public class Browser extends JFrame
{
private HTMLBrowser browser;
private static final long serialVersionUID= 1;

public Browser()
{
setTitle("Help");
browser= new HTMLBrowser();
setContentPane(browser);
setSize(800,600);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}

private class HTMLBrowser extends JEditorPane
{
private static final long serialVersionUID= 2;
private static final String dir= "help";
private static final String startPage= "index.html";

public HTMLBrowser()
{
URL url;
try
{
// Construct the URL
// This is;
// current dir + separator + help dir + separator + startPage
String s= (new File(".")).getCanonicalPath();
String separator= System.getProperty("file.separator");
String t= s + separator + dir + separator + startPage;
// DEBUG
System.out.println(t);
File f= new File(t);
url= f.toURL();
setPage(url);
}
catch (Exception e)
{
System.out.println( "Problem setting help homepage");
}
setEditable(false);
addHyperlinkListener(new LinkListener(this));
}

private class LinkListener implements HyperlinkListener
{
private HTMLBrowser browser;

public LinkListener(HTMLBrowser b)
{
browser= b;
}

public void hyperlinkUpdate(HyperlinkEvent he)
{
if (he.getEventType() == HyperlinkEvent.EventType.ACTIVATED)
{
try
{
URL newPage = he.getURL();
browser.setPage(newPage);

}
catch (IOException ioe)
{
System.out.println( "Error opening new page");
}
}
}
}

}


public static void main(String[] args)
{
new Browser();
}

}

When I run this using "java Browser" (inside ui dir") it works (i.e.
displays the html page I want)
When I run the jar in the directory containing the "help" and "ui"
directories it works fine.
But when I run the jar anywhere else it does not work. The html page
is not displayed. Instead a blank JEditorPane is all that can be seen.

How can I get my class to look at the help/index.html file from within
the jar?

Thanks in advance,

John

 
Reply With Quote
 
 
 
 
Andrew Thompson
Guest
Posts: n/a
 
      10-09-2006
johnmmcparland wrote:
....
> this seems like a commonly asked question, but so far I haven't found
> an answer that works.

...
> How can I get my class to look at the help/index.html file from within
> the jar?


getResource()

Andrew T.

 
Reply With Quote
 
 
 
 
johnmmcparland
Guest
Posts: n/a
 
      10-09-2006
Nope I'm afraid that using get resource as follows;

public HTMLBrowser()
{
URL url;
try
{
// Construct the URL
String separator= System.getProperty("file.separator");
String t= separator + dir + separator + startPage;
// DEBUG
System.out.println(t);
url= getClass().getResource(t);
setPage(url);
}
catch (Exception e)
{
System.out.println( "Problem setting help homepage");
}
setEditable(false);
addHyperlinkListener(new LinkListener(this));
}

did not work.


Andrew Thompson wrote:

> johnmmcparland wrote:
> ...
> > this seems like a commonly asked question, but so far I haven't found
> > an answer that works.

> ..
> > How can I get my class to look at the help/index.html file from within
> > the jar?

>
> getResource()
>
> Andrew T.


 
Reply With Quote
 
johnmmcparland
Guest
Posts: n/a
 
      10-09-2006
Hmm but constructing the string as so;


String t= "/" + dir + "/" + startPage;

does work. Strange.


johnmmcparland wrote:

> Nope I'm afraid that using get resource as follows;
>
> public HTMLBrowser()
> {
> URL url;
> try
> {
> // Construct the URL
> String separator= System.getProperty("file.separator");
> String t= separator + dir + separator + startPage;
> // DEBUG
> System.out.println(t);
> url= getClass().getResource(t);
> setPage(url);
> }
> catch (Exception e)
> {
> System.out.println( "Problem setting help homepage");
> }
> setEditable(false);
> addHyperlinkListener(new LinkListener(this));
> }
>
> did not work.
>
>
> Andrew Thompson wrote:
>
> > johnmmcparland wrote:
> > ...
> > > this seems like a commonly asked question, but so far I haven't found
> > > an answer that works.

> > ..
> > > How can I get my class to look at the help/index.html file from within
> > > the jar?

> >
> > getResource()
> >
> > Andrew T.


 
Reply With Quote
 
Andrew Thompson
Guest
Posts: n/a
 
      10-09-2006

johnmmcparland wrote:
> Hmm


Pleas refrain from top-posting - even when replying
to your own posts..

top-post corrected for clarity.
> > > > How can I get my class to look at the help/index.html file from within
> > > > the jar?
> > >
> > > getResource()

....
>...but constructing the string as so;
>
> String t= "/" + dir + "/" + startPage;
>
> does work. Strange.


Not so strange, really. URL's always use the '/'.

Using the file separator is only appropriate for getting
files off the 'file system', as opposed to resources out
of jar archives.

HTH

Andrew T.

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
java -cp a.jar -jar b.jar => Works on Windows, not on Debian cyberco Java 4 02-14-2006 06:27 AM
jaas.jar, jta.jar jdbc-stdext.jar missing from jdk1.5 RPM muttley Java 0 10-20-2005 02:40 PM
making sure a jar is self-contained Roedy Green Java 8 06-23-2005 07:43 AM
Differences of xercesImpl.jar, xercesImpl-J.jar, dom3-xercesImpl.jar ? Arnold Peters Java 0 01-05-2005 10:59 PM
Differences of xercesImpl.jar, xercesImpl-J.jar, dom3-xercesImpl.jar ? Arnold Peters XML 0 01-05-2005 10:59 PM



Advertisments