Avatar billede casualty Nybegynder
12. oktober 2002 - 23:37 Der er 5 kommentarer og
1 løsning

Spørgsmål omkring jar filer og manifest

Jeg har 2 klasser "Application1.class" og "Frame1.class"...
Dem har jeg puttet i en jar fil således:

jar cf test.jar *

derefter rettede jeg min manifest fil i winzip så den indeholdt:

Manifest-Version: 1.0
Main-Class: Application1
+en ny linie

når jeg herefter prøver at køre min test.jar fil med kommandoen: java -jar test.jar
så får jeg fejlen:

"Failed to load Main-Class manifest attribute from
test.jar"

Hvad sker der....Min path og Classpath skulle være sat rigtigt...tror jeg...Jeg kører win2k

Mvh Casualty
Avatar billede casualty Nybegynder
12. oktober 2002 - 23:44 #1
Application1.class ser således ud:
____________________________________________

// Copyright (c) 2001
package test;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

/**
* test.Application1
* <P>
* @author Anders
*/
public class Application1 {

  /**
  * Constructor
  */
  public Application1() {
    Frame frame = new Frame1();
    //Center the window
    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    Dimension frameSize = frame.getSize();
    if (frameSize.height > screenSize.height) {
      frameSize.height = screenSize.height;
    }
    if (frameSize.width > screenSize.width) {
      frameSize.width = screenSize.width;
    }
    frame.setLocation((screenSize.width - frameSize.width)/2, (screenSize.height - frameSize.height)/2);
    frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } });
    frame.setVisible(true);
  }

  /**
  * main
  * @param args
  */
  public static void main(String[] args) {
    try  {
      UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    }
    catch (Exception e) {
      e.printStackTrace();
    }
    new Application1();
  }
}

Frame1.class ser således ud:
_____________________________________

// Copyright (c) 2001
package test;

import javax.swing.*;
import java.awt.*;

/**
* A Swing-based top level window class.
* <P>
* @author Anders
*/
public class Frame1 extends JFrame {
  BorderLayout borderLayout1 = new BorderLayout();
  JPanel jPanel1 = new JPanel();

  /**
  * Constructs a new instance.
  */
  public Frame1() {
    super();
    try  {
      jbInit();
    }
    catch (Exception e) {
      e.printStackTrace();
    }
  }

  /**
  * Initializes the state of this instance.
  */
  private void jbInit() throws Exception {
    this.getContentPane().setLayout(borderLayout1);
    this.setSize(new Dimension(400, 300));
    this.getContentPane().add(jPanel1, BorderLayout.CENTER);
  }
}
Avatar billede arne_v Ekspert
13. oktober 2002 - 13:11 #2
Da du har din main class i package test skal du vel bruge:

Manifest-Version: 1.0
Main-Class: test.Application1

Endvidere ved jeg ikke om WinZip gør det
rigtige.

Hvorfor ikke bruge:
  jar cmf <manifest-file> <jar-file> <class-files>
?
Avatar billede casualty Nybegynder
13. oktober 2002 - 13:25 #3
Nu kommer den med denne fejl:

Exception in thread "main" java.lang.NoClassDefFoundError: test/Application1

Jeg har rettet min manifest???
Avatar billede arne_v Ekspert
13. oktober 2002 - 13:41 #4
Og din jar-fil indeholder test/Application1.class ?

Kan hurtigt verfiveres med "jar tvf".

(når du har en package test, så skal den ligge
i et sub-directory test)
Avatar billede arne_v Ekspert
13. oktober 2002 - 13:43 #5
Altså du har filer:
  test\*.class
  META-INF\MANIFEST.MF
og du laver jar med:
  jar cmf META-INF\MANIFEST.MF test.jar test\*.class
Avatar billede casualty Nybegynder
13. oktober 2002 - 13:58 #6
Jeg manglede at lægge min MANIFEST i en META-INF mappe....Tak for hjælpen
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