Avatar billede faded Nybegynder
21. oktober 2005 - 20:40 Der er 14 kommentarer og
1 løsning

Problemer med at få Jar fil til at køre

Hej jeg sidder med eclipse og kan køre programmet fejlfrit derfra. Når Eclipse eksporterer Programmet som en jar fil inkluderer den en .classpath fil i roden.

Den ser således ud

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path=""/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
    <classpathentry kind="lib" path="C:/lm/Ny mappe/systray4j/systray4j.jar"/>
    <classpathentry kind="output" path=""/>
</classpath>

Min manifest fil ser således ud

Manifest-Version: 1.0
Main-Class: main.Test

Min Java fil ser således ud

package main;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.util.Vector;
import snoozesoft.systray4j.*;

/**
* Example for the systray4j package.
*/
public class Test extends JFrame implements ActionListener, SysTrayMenuListener
{
    /**
    *
    */
    private static final long serialVersionUID = 1194927799585275118L;
    /**
    *
    */
   
    // frame dimension
    static final int INIT_WIDTH    = 220;
    static final int INIT_HEIGHT  = 140;

    private static final String[] toolTips =
    {
        "SysTray for Java rules!",
        "brought to you by\nSnoozeSoft 2004"
    };

    // create icons
    static final SysTrayMenuIcon[] icons =
    {
        // the extension can be omitted
        new SysTrayMenuIcon( "icons/duke" ),
        new SysTrayMenuIcon( "icons/duke_up" )
    };

    SysTrayMenu menu;
    int currentIndexIcon;
    int currentIndexTooltip;

    public Test()
    {
        super( "SysTray for Java Example" );
        //setIconImage( new ImageIcon(
          //  getClass().getResource( "rocket.gif" ) ).getImage() );

        Dimension dimScreen = Toolkit.getDefaultToolkit().getScreenSize();

        int xPos = ( dimScreen.width - INIT_WIDTH ) / 2;
        int yPos = ( dimScreen.height - INIT_HEIGHT ) / 2;

        setBounds( xPos, yPos, INIT_WIDTH, INIT_HEIGHT );

        // don´t forget to assign listeners to the icons
        icons[ 0 ].addSysTrayMenuListener( this );
        icons[ 1 ].addSysTrayMenuListener( this );

        // change this according to the number of buttons used
        getContentPane().setLayout( new GridLayout( 4, 1 ) );

        addButton( "change icon" );
        addButton( "change tooltip" );
        addButton( "show/hide icon" );
        addButton( "enable/disable submenu" );

        // create the menu
        createMenu();

        show();
    }

    public static void main( String[] args )
    {
        try{ UIManager.setLookAndFeel( UIManager.getSystemLookAndFeelClassName() ); }
        catch( Exception e ) {}

        new Test();
    }

    public void actionPerformed( ActionEvent e )
    {
        if( e.getActionCommand().equals( "change tooltip" ) )
        {
            if( currentIndexTooltip == 0 ) currentIndexTooltip = 1;
            else currentIndexTooltip = 0;

            menu.setToolTip( toolTips[ currentIndexTooltip ] );
        }
        else if( e.getActionCommand().equals( "change icon" ) )
        {
            if( currentIndexIcon == 0 ) currentIndexIcon = 1;
            else currentIndexIcon = 0;

            menu.setIcon( icons[ currentIndexIcon ] );
        }
        else if( e.getActionCommand().equals( "show/hide icon" ) )
        {
            if( menu.isIconVisible() ) menu.hideIcon();
            else menu.showIcon();
        }
        else if( e.getActionCommand().equals( "enable/disable submenu" ) )
        {
            SysTrayMenuItem item = menu.getItem( "Communication" );
            if( item.isEnabled() ) item.setEnabled( false );
            else item.setEnabled( true );
        }
    }

    public void menuItemSelected( SysTrayMenuEvent e )
    {
        if( e.getActionCommand().equals( "exit" ) ) System.exit( 0 );
        else if( e.getActionCommand().equals( "about" ) )
        {
            JOptionPane.showMessageDialog( this, "SysTray for Java v" + SysTrayMenu.VERSION );
        }
        else JOptionPane.showMessageDialog( this, e.getActionCommand() );
    }

    public void iconLeftClicked( SysTrayMenuEvent e )
    {
        if( isVisible() ) hide();
        else show();
    }

    public void iconLeftDoubleClicked( SysTrayMenuEvent e )
    {
        JOptionPane.showMessageDialog( this, "You may prefer double-clicking the icon." );
    }

    void createMenu()
    {
        // create some labeled menu items
        SysTrayMenuItem subItem1 = new SysTrayMenuItem( "Windows 98", "windows 98" );
        subItem1.addSysTrayMenuListener( this );
        // disable this item
        subItem1.setEnabled( false );

        SysTrayMenuItem subItem2 = new SysTrayMenuItem( "Windows 2000", "windows 2000" );
        subItem2.addSysTrayMenuListener( this );
        SysTrayMenuItem subItem3 = new SysTrayMenuItem( "Windows XP", "windows xp" );
        subItem3.addSysTrayMenuListener( this );
       
        SysTrayMenuItem subItem4 = new SysTrayMenuItem( "GNOME", "gnome" );
        subItem4.addSysTrayMenuListener( this );
        subItem4.setEnabled( false );
       
        SysTrayMenuItem subItem5 = new SysTrayMenuItem( "KDE 3", "kde 3" );
        subItem5.addSysTrayMenuListener( this );

        Vector items = new Vector();
        items.add( subItem1 );
        items.add( subItem2 );
        items.add( subItem3 );
        items.add( subItem4 );
        items.add( subItem5 );

        // create a submenu and insert the previously created items
        SubMenu subMenu = new SubMenu( "Supported", items );

        // create some checkable menu items
        CheckableMenuItem chItem1 = new CheckableMenuItem( "IPC", "ipc" );
        chItem1.addSysTrayMenuListener( this );
       
        CheckableMenuItem chItem2 = new CheckableMenuItem( "Sockets", "sockets" );
        chItem2.addSysTrayMenuListener( this );

        CheckableMenuItem chItem3 = new CheckableMenuItem( "JNI", "jni" );
        chItem3.addSysTrayMenuListener( this );
       
        // check this item
        chItem2.setState( true );
        chItem3.setState( true );

        // create another submenu and insert the items through addItem()
        SubMenu chSubMenu = new SubMenu( "Communication" );
        // disable this submenu
        chSubMenu.setEnabled( false );

        chSubMenu.addItem( chItem1 );
        chSubMenu.addItem( chItem2 );
        chSubMenu.addItem( chItem3 );

        // create an exit item
        SysTrayMenuItem itemExit = new SysTrayMenuItem( "Exit", "exit" );
        itemExit.addSysTrayMenuListener( this );

        // create an about item
        SysTrayMenuItem itemAbout = new SysTrayMenuItem( "About...", "about" );
        itemAbout.addSysTrayMenuListener( this );

        // create the main menu
        menu = new SysTrayMenu( icons[ 0 ], toolTips[ 0 ] );

        // insert items
        menu.addItem( itemExit );
        menu.addSeparator();
        menu.addItem( itemAbout );
        menu.addSeparator();
        menu.addItem( subMenu );
        menu.addItem( chSubMenu );
    }

    void addButton( String label )
    {
        JButton btn = new JButton( label );
        btn.setActionCommand( label );
        btn.addActionListener( this );

        getContentPane().add( btn );
    }
}


som sagt kan jeg få det til at køre indefra Eclipse men ikke med javaw

Hvad går galt
Avatar billede arne_v Ekspert
21. oktober 2005 - 20:46 #1
prøv med et manifest:

Main-Class: main.Test
Class-Path: systray4j.jar

og kopier systray4j.jar til samme dir som din jar
Avatar billede faded Nybegynder
21. oktober 2005 - 20:53 #2
og kopier systray4j.jar til samme dir som din jar, lægge den ind i jarfilen eller lægge den vedsiden af den altså i samme dir
Avatar billede arne_v Ekspert
21. oktober 2005 - 20:55 #3
ved siden af din jar fil i samme dir
Avatar billede faded Nybegynder
21. oktober 2005 - 20:57 #4
Udmærket smid et par point, ved du hvorledes jeg starter dette program med en bat fil eller en registrings dims i reg-database i windows. Ville gerne lave et lille installations program
Avatar billede faded Nybegynder
21. oktober 2005 - 20:59 #5
mente smid et svar
Avatar billede arne_v Ekspert
21. oktober 2005 - 21:00 #6
en BAT fil vil lave en grim sort DOS box

hvis Java er installeret rigtigt bør du bare kunne dobbeltklikke på din jar fil

ellers kan du lave en .lnk fil som peger på javaw med -jar dinfil.jar som argument

eller du kan lave din egen EXE wrapper
Avatar billede arne_v Ekspert
21. oktober 2005 - 21:01 #7
og et svar
Avatar billede faded Nybegynder
21. oktober 2005 - 21:02 #8
lige hurtigt hvordan skal den ink fil se ud, uden at dosbox kommer op
Avatar billede faded Nybegynder
21. oktober 2005 - 21:02 #9
eller hvordan laver man den ink filen
Avatar billede arne_v Ekspert
21. oktober 2005 - 21:03 #10
lav et shortcut til javaw

gå ind i properties og tilføj de nødvendige argumenter
Avatar billede faded Nybegynder
21. oktober 2005 - 21:04 #11
hvordan laver man en shortcut til til javaw
Avatar billede arne_v Ekspert
21. oktober 2005 - 21:05 #12
højreklik på desktop
new
shortcut
browse til javaw.exe
etc.
Avatar billede faded Nybegynder
21. oktober 2005 - 21:10 #13
Kender du et produkt der kan lave en installation fil nemt, og gerne gratis
Avatar billede arne_v Ekspert
21. oktober 2005 - 21:12 #14
ikke noget jeg selv har prøvet

jeg har hørt om folk som bruger http://www.izforge.com/izpack/
Avatar billede faded Nybegynder
21. oktober 2005 - 21:13 #15
takker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester