Executable Jar file doesn't show images

Hello all,
In my jar file, I have two references to images, which are instantiated as follows:
Icon something = new ImageIcon("image.gif");
However, when I compile an executable JAR file, these images don't show.
I've included the image in the directory which is used for the jar source, and I can't think of any other reasons why it wouldn't work... Does anyone have any ideas?
Thanks
Gemma

First you need to create an URL to the image inside your jar
String insideJarPath = "/mypackage/images/myImage.jpg"; // starts with a /
Url myImageURL = getClass().getResource(insideJarPath);
Then use that to create your ImageIcon:
ImageIcon myIcon = new ImageIcon(myImageURL);
See API of Class.getResource()
It will tell you that you can work absolute from inside the jar by starting with a "/" for the insideJarPath.
Or you can work relative from the package directory of the class instance calling getClass() by not starting with "/".

Similar Messages

  • How can I add image files to a executable jar file ?

    Could you tell me how can I add image files to executable jar file ?
    package structure:
    ../com/Main.class
    ../images/..

    Please don't cross post, and read this
    http://forum.java.sun.com/thread.jsp?forum=31&thread=271751
    I've answered the question in the New To Java thread.

  • Jar file doesn't work

    I am quite new to java so I hope my question is not stupid.
    I used bluej to realize an application.It works when executing the main method in bluej,but when I create the jar file,it simpy doesn't work.I have included the main class when creating the jar file.When double-clicking on the jar file, it makes the typical error sound of windows,but it doesn't show any message.
    What is the problem?

    Welcome to the Sun forums.
    Subject: My Applet Jar file doesn't work !! .
    1) Note that one '!' denotes exclamation, whereas 2 or more often denotes a dweeb.
    2) Since you are on your first post, I will point out that applets are an advanced topic, and should not be attempted by newbies.
    3) "doesn't work" is very vague. It is likely to produce a reply like "maybe the applet is lazy - try flogging it".
    Amera wrote:
    ..I have written this java applet :When posting code, code snippets, HTML/XML or input/output, please use the code tags. The code tags help retain the formatting and indentation of the sample. To use the code tags, select the sample and click the CODE button.
    Also note that the most preferred form of code is an SSCCE *(<- link).* In an SSCCE, your would remove all but one button (if the actionPerformed fails with 6 or 7 buttons, trim it down to fail with just one or two.
    i made a jar file :So does the applet work before you make the Jar file? Your post so far suggests the Jar file is the problem.
    i created a file and named it MANIFEST.MF .i wrote inside it :
    Main-Class: test
    Then i placed it in a folder with the test.class .I created jar file using command line.
    I entered the test.class path and then wrote this command :
    jar cvfm myjar.jar MANIFEST.MF *.class
    Then the jar file "myjar.jar" is created .
    it's executed but this function "public void actionPerformed(ActionEvent e) " won't wrok.
    i keep pressing the buttons but nothing is happening !!So you get 'no output in the console & no effect in the applet'?
    What is the URL where I can see your applet failing?
    As an aside, since Sun does not guarantee that applet clients will act on the showDocument command, even if it does not work, it would not be a 'bug'.
    Edited by: AndrewThompson64 on Dec 28, 2009 11:18 AM

  • Class not found error while executing jar file

    I have written a java code in which i am connecting to database....when i run the class file using......java class_filename it works........
    but when i run the jar file using .......java -jar jar_name ...yi gives me the error as 'Class not found'......
    can anybody help me please......
    Thanks and Regards,
    Siddhesh

    that class is part of jar file.....in classpath i have included zip files for jdbc ...to get databse connection.....and the jar being executed ................still it gives the error ClassDefnotfound which i think is due to database connection problem.....the exception is raised while.....
    Class.ForName("Driver_name").newInstance();/ This driver is present in zip files that i have added in classpath....
    above statement doesn,t giv error while i execute the class file............but exception while executing jar file only..
    Thnaks and regards,
    siddhesh

  • JSP referencinc taglib.tld in JAR file doesn't work.

    I have some custom tags which work fine under Weblogic 5.1 when I do a
              normal deployment of files, including the taglib.tld. However, when I
              try to reference the taglib.tld located in a JAR file, then weblogic
              throws an error saying that it cannot resolve into a valid tag library.
              I am only doing this because I am testing the same site agains both
              iPlanet Web Server and Weblogic. iPlanet will only find the taglib.tld
              when it is in a JAR file.
              Can anyone shed some light on referencing the taglib.tld in a JAR file.
              This should work, as it is covered in the JSP 1.1 specification.
              FYI - the jar file is in the same location as the JSP which references
              it. The URI to the JAR file (in the JSP) is from the root of the site.
              Thanks for any help.
              -Scott Edwards
              

    Welcome to the Sun forums.
    Subject: My Applet Jar file doesn't work !! .
    1) Note that one '!' denotes exclamation, whereas 2 or more often denotes a dweeb.
    2) Since you are on your first post, I will point out that applets are an advanced topic, and should not be attempted by newbies.
    3) "doesn't work" is very vague. It is likely to produce a reply like "maybe the applet is lazy - try flogging it".
    Amera wrote:
    ..I have written this java applet :When posting code, code snippets, HTML/XML or input/output, please use the code tags. The code tags help retain the formatting and indentation of the sample. To use the code tags, select the sample and click the CODE button.
    Also note that the most preferred form of code is an SSCCE *(<- link).* In an SSCCE, your would remove all but one button (if the actionPerformed fails with 6 or 7 buttons, trim it down to fail with just one or two.
    i made a jar file :So does the applet work before you make the Jar file? Your post so far suggests the Jar file is the problem.
    i created a file and named it MANIFEST.MF .i wrote inside it :
    Main-Class: test
    Then i placed it in a folder with the test.class .I created jar file using command line.
    I entered the test.class path and then wrote this command :
    jar cvfm myjar.jar MANIFEST.MF *.class
    Then the jar file "myjar.jar" is created .
    it's executed but this function "public void actionPerformed(ActionEvent e) " won't wrok.
    i keep pressing the buttons but nothing is happening !!So you get 'no output in the console & no effect in the applet'?
    What is the URL where I can see your applet failing?
    As an aside, since Sun does not guarantee that applet clients will act on the showDocument command, even if it does not work, it would not be a 'bug'.
    Edited by: AndrewThompson64 on Dec 28, 2009 11:18 AM

  • Classpath is not working for executable jar file

    I have created executable jar file using following command where manifest file contains Main-Class and Class-Path entries.
    jar cvfm app.jar META-INF/* lib/* *.class
    So here app.jar contains my external jar's in lib directory
    but when I move app.jar to another directory, it's doesn't get my external files.
    I'm not getting this problem as these jar's are in app.jar
    class-path entry in manifest file:
    Class-Path: lib/abc.jar lib/xyz.jar
    Pls help me where it is getting fail?
    Thanks in advance,
    Vikas

    Java doesn't handle jars within jars. Your library jars need to be outside of the executable jar as in
    dist - main.jar
          - lib  -  lib1.jar
                 -  lib2.jar

  • Finder doesn't show image dimensions

    Hi!
    I have a problem with image dimensions in Finder. Finder doesn't show image dimension info in preview column and Get Info window. But when I open in Preview app I can see dimensions in Get Info window. How to solve this problem. If I want to sort images by dimension, I can't do that. Because Finder doesn't know image dimensions. You can see images below.

    Terence Devlin wrote:
    That's because the Finder is a file manager and works from file metadata. The data you're seeking is about the file contents. You need to use a Photo Manager or Browser.
    There is someone who can sort images by dimensions and see dimensions in list view. Also if Finder will not show image dimensions, why give me "Dimensions" and "Resolution" option to select in list view.
    VikingOSX wrote:
    Launch a Finder window. Press command+J, and set Show Item Info. Now the image dimensions will show below each image icon. If it is a movie, then the duration of the movie is shown.
    I have done this. But doesn't show information.

  • Problem in loading applet from non executable jar file

    hello ,
    I am new to jar concept plz help.. I am trying to call an applet from another applet through frame it is working fine but its download time is much more. now i want to store all my images , sound files and class files of other applets in a jar file and want to access these inner applets from this jar file so that it will make only one http connection with the server for this jar file only and can reduce the download time of applet.
    Can anyone can give me suggestion plz..
    Thanx

    You have to download what you have to download. You
    probably can't easily share images between 2 separate
    Jar files. Unless you can expose them through the
    other applet via a method that can be known once you
    have the reference to the other applet.Thanx but i think i have to elaborate the problem :
    my project structure is just like this ::
    on the top is ::
    Applet A---> from this applet i am callling Applet B & Applet C in frame
    and communication is established between these 3 applets successfully .
    now i have made a single non executable jar file which contains images , sound and class files of these applets .
    so i am referencing images and sound files in applets through this jar.
    but i wanted to load Applet B & C through this jar file only.
    How can i do this ??
    Thanx .. I hope now the problem is clear

  • Question about Executable JAR Files

    Is it possible to make an executable JAR file that has all of the *.class files, all of the *.jar archives used, etc. packaged into one file that doesn't need these external files within the same directory? I've been having a ton of trouble finding the answer to this. (If it's blatantly obvious, please forgive me.)

    Hello,
    I went through the same thing recently. Here is a piece of the build file I use:
    <project name="MyProj" basedir="." default="main">
        <property name="src.dir"     value="src"/>
        <property name="build.dir"   value="build"/>
        <property name="classes.dir" value="${build.dir}/classes"/>
        <property name="jar.dir"     value="${build.dir}/jar"/>
        <property name="main-class"  value="MyProj.Main"/>
        <property name="lib.dir"     value="lib"/>
        <path id="classpath">
            <fileset dir="${lib.dir}" includes="**/*.jar"/>
        </path>
        <target name="compile">
            <mkdir dir="${classes.dir}"/>
            <javac srcdir="${src.dir}" destdir="${classes.dir}" classpathref="classpath"/>
        </target>
        <target name="jar" depends="compile">
            <mkdir dir="${jar.dir}"/>
            <jar destfile="${jar.dir}/${ant.project.name}.jar" basedir="${classes.dir}">
              <zipfileset src="lib/commons-codec-1.3.jar"/>
              <zipfileset src="lib/commons-fileupload-1.1.1.jar"/>
              <zipfileset src="lib/commons-httpclient-3.0.1.jar"/>
                <manifest>
                    <attribute name="Main-Class" value="${main-class}"/>
                </manifest>
            </jar>
        </target>
        <target name="main" depends="clean,run"/>
    </project>Note the <zipfileset> tags that contain the .jars.
    There are, however, many good reasons to not do this. Some were already mentioned, another is in the case of update external libraries, you might not want to rebuild your whole project, replacing a jar may be easier.
    Good luck,
    -Sam

  • My  Applet Jar file doesn't work !!

    hello ,
    I have written this java applet :
    import java.awt.*;
    import javax.swing.*;
    import java.applet.Applet;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.net.URL;
    public class test4 extends Applet implements ActionListener{
         private static final long serialVersionUID = 1L;
         private JButton B1 =new JButton("Forward ");
         private JButton B2 =new JButton("Backward");
         private JButton B3 =new JButton("Left");
         private JButton B4 =new JButton("Right");
    private JPanel P1 = new JPanel();
    private JPanel P2 = new JPanel();
    private JPanel P3 = new JPanel();
    private JPanel P4 = new JPanel();
    private JPanel P5 = new JPanel();
    private JPanel P6 = new JPanel();
    private JLabel L3 = new JLabel(" ");
    private JLabel L4 = new JLabel(" ");
    private JLabel L5 = new JLabel(" ");
    private JLabel L6 = new JLabel(" ");
    private JLabel L7 = new JLabel(" ");
    JSplitPane sppSplitPane0 = new JSplitPane( );
         public test4()
              JFrame.setDefaultLookAndFeelDecorated(true);
              sppSplitPane0.setDividerLocation( 250 );
              P3.add(L4);
              P3.add(B1);
              P3.add(L5);
              P5.add(B3);
              P5.add(L3);
              P5.add(B4);
              P4.add(L6);
              P4.add(B2);
    P4.add(L7);
              P1.setLayout(new BorderLayout());
              P1.add("North",P3);
              P1.add("Center",P5);
              P1.add("South",P4);
              P2.setLayout(new BorderLayout());
              P2.add("North" , P1);
              B1.addActionListener(this);
              B2.addActionListener(this);
              B3.addActionListener(this);
              B4.addActionListener(this);
              sppSplitPane0.setLeftComponent(P2);
              sppSplitPane0.setRightComponent(P6);
         public void actionPerformed(ActionEvent e) {
              try {
                   if (e.getSource() == B4) {
              URL myNewURL = new URL("http://amera/cgi-bin/test.cgi?R");
              System.out.println("URL = " + myNewURL);
              getAppletContext().showDocument(myNewURL,"blank");
                   else
                        if (e.getSource() == B3) {
                        URL myNewURL = new URL("http://amera/cgi-bin/test.cgi?L");
                        System.out.println("URL = " + myNewURL);
                        getAppletContext().showDocument(myNewURL,"blank");
                        else
                             if (e.getSource() == B2) {
                             URL myNewURL = new URL("http://amera/cgi-bin/test.cgi?B");
                             System.out.println("URL = " + myNewURL);
                             getAppletContext().showDocument(myNewURL,"blank");
                             else {
                                  URL myNewURL = new URL("http://amera/cgi-bin/test.cgi?F");
                                  System.out.println("URL = " + myNewURL);
                             getAppletContext().showDocument(myNewURL,"blank");
              } catch (Exception err) {
              System.err.println("Error!\n" + err);
              showStatus("Error, look in Java Console for details!");
         public static void main(String[] args) {
              test t=new test();
              JFrame frame =new JFrame();
              frame.add(t.sppSplitPane0);
              frame.setSize(1100,700);
              frame.setVisible(true);
    i made a jar file :
    i created a file and named it MANIFEST.MF .i wrote inside it :
    Main-Class: test
    Then i placed it in a folder with the test.class .I created jar file using command line.
    I entered the test.class path and then wrote this command :
    jar cvfm myjar.jar MANIFEST.MF *.class
    Then the jar file "myjar.jar" is created .
    it's executed but this function "public void actionPerformed(ActionEvent e) " won't wrok.
    i keep pressing the buttons but nothing is happening !!
    please help me .
    Edited by: Amera on Dec 27, 2009 2:51 PM

    Welcome to the Sun forums.
    Subject: My Applet Jar file doesn't work !! .
    1) Note that one '!' denotes exclamation, whereas 2 or more often denotes a dweeb.
    2) Since you are on your first post, I will point out that applets are an advanced topic, and should not be attempted by newbies.
    3) "doesn't work" is very vague. It is likely to produce a reply like "maybe the applet is lazy - try flogging it".
    Amera wrote:
    ..I have written this java applet :When posting code, code snippets, HTML/XML or input/output, please use the code tags. The code tags help retain the formatting and indentation of the sample. To use the code tags, select the sample and click the CODE button.
    Also note that the most preferred form of code is an SSCCE *(<- link).* In an SSCCE, your would remove all but one button (if the actionPerformed fails with 6 or 7 buttons, trim it down to fail with just one or two.
    i made a jar file :So does the applet work before you make the Jar file? Your post so far suggests the Jar file is the problem.
    i created a file and named it MANIFEST.MF .i wrote inside it :
    Main-Class: test
    Then i placed it in a folder with the test.class .I created jar file using command line.
    I entered the test.class path and then wrote this command :
    jar cvfm myjar.jar MANIFEST.MF *.class
    Then the jar file "myjar.jar" is created .
    it's executed but this function "public void actionPerformed(ActionEvent e) " won't wrok.
    i keep pressing the buttons but nothing is happening !!So you get 'no output in the console & no effect in the applet'?
    What is the URL where I can see your applet failing?
    As an aside, since Sun does not guarantee that applet clients will act on the showDocument command, even if it does not work, it would not be a 'bug'.
    Edited by: AndrewThompson64 on Dec 28, 2009 11:18 AM

  • Newbie's problem with executable jar file

    hello
    i create an executable jar file and it seems ok except it fails to locate all of my image files.
    when i use
    java -jar myproject.jar
    it fails to display included pictures and files.
    however, when i extract this jar file and run, it works fine (displays everything).
    do i need to do add some informations about these included file's information into Manifest file?
    thank you

    thank you for the reply.
    i have searched through java, and find "class javax.commerce.cassette.JARCassetteLoader". is this one you referred? i have used file related examples from the java-swing samples.
    //post - return the file path
    protected static ImageIcon getImageIcon(String path)
    java.net.URL imgURL = TestDialog.class.getResource(path);
    if (imgURL != null)
    return new ImageIcon(imgURL, description);
    else
    System.out.println("Couldn't find file: " + path);
    return null;
    then i just use
    ImageIcon icon = getImageIcon("images"+File.separator+"simple.gif"); // images\simple.gif
    thank you

  • Finding a file in the current executable jar file.

    Hi all,
    I am writing a little command line type application and I thought it would be neat to embed it's 'help file' into it's executable JAR file.
    Please can someone show me how to code my application to extract a file from the JAR file from which the Main.class also came?
    (Is that possible?)
    I've been looking around, I can find out how to work with a different JAR file but NOT how to examine the currently 'executing' one.
    Many thanks,
    - jon.

    Excellent! Thank you very much. It's easy when you know how. This works a treat!:
         private static void printHelp() {
              InputStream helpFile = Misql.class.getClassLoader().getResourceAsStream("doc/MISQLhelp.txt");
              if (helpFile == null) {
                   _out.println("Help file: doc/MISQLhelp.txt not found.");
                   return;               
              try {
                   int c;
                   while ((c = helpFile.read()) != -1)
                        _out.write(c);
                   helpFile.close();
              } catch (IOException e) {
                   // TODO Auto-generated catch block
                   e.printStackTrace();
              return;
         }

  • Associating executable Jar files w/ appropriate program

    Hi, I'm kinda new to java but this question is more OS related I think. I made a GUI program that reads / writes files and does some other stuff, I compiled it, then made it into an Executable JAR file. I put the file on my dektop w/ the required resource file (contains the read files) and then I double-click it and lo and behold Win-Ace(R) popps up. I right-clicked on the executable jar file, associated it with JAVAW, double-clicked again and it worked. So i guess my question is, is there a way that it will automatically associate itself with the right program so when I give this program to other people, they won't have to associate it the same way?
    Anyhelp would be greatly appriciated!

    No, becourse even if java could do that it would make sence becourse to run the jar it must be associated with javaw.
    But you could try to create a .reg file (registry file) that associate jar with javaw, when somebody runs the reg file it associate jar with javaw.
    But I think you should make different reg files for different windows versions (not sure about that).
    I don't have experience with how to write reg files but you just google.
    But I should try it out on your own windows, you could install windows on another partion and try it out on that one (first make a image with norton gost or something so if something goes wrong you can fastly get back to the old state).
    But you can also export your registry to a file so you can put the old registry back if somethings goes wrong.
    Use these tips on you own risk!!!

  • A few questions about executable Jar files

    Hi,
    I have to make an a tutorial system and was going to make it using applets embedded in webpages. This approach causes certain limitations so decided to make it using JPanels that open up as windows on the users computer.
    I intend on compressing all the files (java, images, sound etc) within a Jar file and would like a few questions answering.
    1. How would I make an executable Jar file that when clicked on will load the program on the users computer. Is there some software to do it for me or do I have to do it from the command prompt?
    2. Is using a Jar file the best approach or is there a better way to get my java program to run on other peoples pc's
    3. If I create an executable Jar file on windows xp, will it run on a Linux machine?
    Cheers

    1. How would I make an executable Jar file that when clicked on will load the program on the users computer. Is there some software to do it for me or do I have to do it from the command prompt?The SDK contains all the tools you need. Use the jar command. To make your jar executable, include a manifest file that references your main class.
    2. Is using a Jar file the best approach or is there a better way to get my java program to run on other peoples pc'sA jar will work just fine.
    3. If I create an executable Jar file on windows xp, will it run on a Linux machine?Yes.

  • Executable jar files and manifest file

    Hi,
    I have the following files in a folder named: Test
    a.jar
    b.jar
    c.jar
    Driver.class
    Driver.mf
    Here, MainClass is the main executable class that uses a,band c.jar files. This is how my MainClass.mf file looks:
    Manifest-Version: 1.0
    Main-Class: Driver
    Class-Path: a.jar b.jar c.jar
    Now I use the following command to make one executable jar file:
    jar cmf Driver.mf DriverMain.jar *
    It creates an executable jar file named : DriverMain.jar
    Now I copy the executable jar file (DriverMain.jar) into a different folder named: RunTest
    and double click it, doesn't work.
    my question is:
    what am I doing wrong? Any special characters needed in my Driver.mf file (space/newline/etc)?
    What I am trying to get is: One execuatble jar file so I can just double click to run it, and that single executable jar file will have all the necessary jars in it (i.e. a.jar, b.jar, c.jar in this case)
    Anyone please help!
    Thanks
    -Ron

    Rony,
    Sorry to disappoint, but you can not use embeded jar/zip files within an executable jar. The JDK sadly for some reason decided this was not a useful idea, so developers like me who want to distribute plugins with thier own dependencies have one of two choices. You either have to unzip the jar file that contains the embeded jars to a directory, then run your primary exectuable jar, OR you have to write a custom classloader that your "launcher" creates then loads the embeded jar files.
    The best thing to do is either jar up a, b, c and driver into one jar, so that it works, if you can legally do this. A lot of 3rd party libraries may not allow this per their license. Otherwise, another choice is to use a free installer or buy an installer that allows you to distribute a single exectuable installer program that will properly create the dir structure you need.
    As for the way it works, if you declare:
    Class-Path: a.jar b.jar c.jar
    the JAR loader code in the JDK looks in the root dir where your application was started for a/b/c jar files. They have to be on disk.
    If you want to place them in /lib, for example, you would havd a jar file like:
    Driver.class
    Driver.mf
    lib/a.jar
    lib/b.jar
    lib/c.jar
    When unzipped, your "root" dir would look exactly like the above, and your manifest would have Class-Path using ./lib/a.jar ./lib/b.jar ./lib/c.jar
    Anyway, there thus far isn't any way around this issue of embeding jar files in an executable jar file. You MIGHT be able to not specify any classpath, then in your Driver.class, create a new custom classloader that dervies from URLClassLoader, but in the findClass(), you get a ref to the .jar file that the classloader class is inside of, and from that use it to find the lib/*.jar files and add them to the classpath. For this to work, however, your Driver.class code should ALSO be contained in an embeded jar file that is loaded by this custom loader. The only thing Driver.class would contain (and I would rename it to something like Launcher) is the code to create the custom classloader.
    It's fun stuff, but a little bit of work to make it work. You can infact make it work! I may yet one day take our plugin engine custom loader and create a way for this to work!

Maybe you are looking for

  • I have two Apple ID's. One of them was compromised and I'm unable to reset the password. How do I disable it?

    I received an email stating that I had downloaded something from iTunes that I didn't download. I went in to reset the password on that account, but now I'm unable to; the emals aren't sending to my email account nor is my birthdate correct anymore.

  • IPhoto 6.0.5 - No full screen; no edit windows

    For some reason the Edit windows for exposure, etc., have disappeared. I checked "help" and find that I can neither switch to a full screen nor see the "edit" buttons after hitting "edit." All I get are the "enhance", "crop," etc. I know I had these

  • 9.2 deployment problem.

    I created a simple portal on 9.2 beta and deployed. Deployment was not successful and here is the dump in console. Pl. help. \weblogic.policy weblogic.Server Listening for transport dt_socket at address: 8453 <Jun 8, 2006 10:57:11 AM EDT> <Notice> <W

  • Music tracks lost in Elements Editor

    I create photostories of collected photos, import them into my catalog and then create a slide show in the Editor. I also add music tracks. Has anybody had a problem with the music tracks being gone upon restoring a backup? In fact, all of my backups

  • Cisco Works SNMP write community string Incorrect

    Hi, I have installed Cisco Works at my organisation. Under RME -> Inventory -> Import status -> Device Attribute Error: I am getting: Incorrect SNMP write community strings. Even though i know perfectly well the SNMP write community string is correct