Problema em execução de ".jar"

9 respostas
B

Bom, eu já li os tutoriais, tentei fazer um .jar tanto na mão como no NetBeans mas não rolou. Dá um problema no “main” na hora de executar.
Vou colocar aqui o código teste que estou usando, lembrando que esse código compila e roda normalmente, exceto quandeu insiro a linha referente ao package.

package pacoteTeste2; // 
import java.awt.*;
import java.applet.Applet;
import java.awt.image.*;
import javax.swing.*;
import java.awt.geom.AffineTransform;
import java.awt.event.*;

public class Map_Line extends Applet {
		
    private BufferedImage bi;
	 public int x=0, y=0;
	 public static Map_Line Map;
	 
    public Map_Line() {
	 	  WindowListener l = new WindowAdapter() {
            public void windowClosing(WindowEvent e) {System.exit(0);}
        };
        Frame f = new Frame("Exibir Imagens");
		  f.addWindowListener(l);
		  pega_botao botao = new pega_botao();
			f.addKeyListener(botao);
        f.add("Center", this);
        f.pack();
	 			setBackground(Color.black);
            Image img = getToolkit().getImage("kuruma.gif");
	    try {
                MediaTracker tracker = new MediaTracker(this);
                tracker.addImage(img, 0);
                tracker.waitForID(0);
            } catch (Exception e) {}

            int iw = img.getWidth(this);
            int ih = img.getHeight(this);
            bi = new BufferedImage(iw, ih, BufferedImage.TYPE_INT_RGB);
            Graphics2D big = bi.createGraphics();
            big.drawImage(img,0,0,this);
				f.setSize(new Dimension(350, 250));
	        f.show();

    }

    public void paint(Graphics g) {

        Graphics2D g2 = (Graphics2D) g;
		  //JOptionPane.showMessageDialog(null, "");
        int w = getSize().width;
        int h = getSize().height;
		  
        int bw = bi.getWidth(this);
        int bh = bi.getHeight(this);

        g2.drawImage(bi, null, x, y);
        g2.setColor(Color.black);
        g2.setStroke(new BasicStroke(5.0f));
        //g2.drawLine(10, 10, bw-10, bh-10);
    }

    public static void main(String[ ] args) {
		Map = new Map_Line();
    }
	 
	 class pega_botao implements KeyListener {
		public int desenhando = 1;
		public int sair = 0;
		public String Sout;
		public Graphics g;
		public void keyPressed(KeyEvent e){
			if (e.getKeyCode() == KeyEvent.VK_LEFT){
				//JOptionPane.showMessageDialog(null, "ESQUERDA");
				Map.x -= 5;
				Map.repaint();
			}
			if (e.getKeyCode() == KeyEvent.VK_RIGHT){
				//JOptionPane.showMessageDialog(null, "DIREITA");
				Map.x += 5;
				Map.repaint();
			}
			if (e.getKeyCode() == KeyEvent.VK_UP){
				//JOptionPane.showMessageDialog(null, "ESQUERDA");
				Map.y -= 5;
				Map.repaint();
			}
			if (e.getKeyCode() == KeyEvent.VK_DOWN){
				//JOptionPane.showMessageDialog(null, "ESQUERDA");
				Map.y += 5;
				Map.repaint();
			}
		}
		public void keyTyped(KeyEvent e){}
		public void keyReleased(KeyEvent e){ 
		} 
	} 
}

Meu manifest.txt tem o seguinte:

Main-Class: pacoteTeste2.Map_Line
Name: pacoteTeste2/Map_Line.class
Java-Bean: True

Obrigado.

9 Respostas

C

Irmao da uma olhada nessa linha

public class Map_Line extends Applet {

n e assim :

public class Map_Line extends JApplet {

Tenta assim!!

E ao seu .jar, pelo q vi ta normal kra!! !!

B

Valew, cara, mas mesmo assim não fununciou…o chato é que eu tenho um sistema pra compactar e nem esse teste eu to conseguinto, eu clico no .jar e nada, simplesmente não funciona (apesar de ele carregar na memória).
Mas mesmo assim, obrigado!

D

primeiro ponto; o seu arquivo manifest possui uma linha em branco no final? (ele nao funciona direito sem isso!)

segundo: voce esta tentando rodar uma applet a partir de um jar? 8O
ate onde entendo de java… nao da pra fazer isso. :???:

applet eh feito pra rodar no browser ou no utilitario no appletviewer q vem com o SDK.

faça sua interface em um jframe ou frame (como preferir) q deve funcionar

:wink:

B

Bem, her…agora eu não estou conseguindo passar para JFrame, hehe…
Já tinha feito frames antes que funcionaram, e parecidos com este, mas esse aqui não deu muito certo, pq ele diz que não suporta o implements ActionListener por não ser uma classe abstrata…porém quando eu tiro ele compila mas não roda. Vou colocar o código abaixo, se alguém puder dar uma luz a essa mente confusa, eu agradeço!
:oops:

import java.applet.Applet;
import java.awt.image.*;
import javax.swing.*;
import java.awt.geom.AffineTransform;
//import java.awt.event.WindowEvent;
//import java.awt.event.WindowListener;
//import java.awt.event.WindowAdapter;
import java.awt.event.*;

public class Map_Line extends JFrame /*implements ActionListener*/ {

	 public static Map_Line Map;		
	 public static JPanel status; 
    private BufferedImage bi;
	 public int x=0, y=0;
	 public static pega_botao botao;
	
	public Graphics g = null;
	public static Container container; 
	public Map_Line() {
		 	  WindowListener l = new WindowAdapter() {
            public void windowClosing(WindowEvent e) {System.exit(0);}
        };
        addWindowListener(l);
		  container = getContentPane();
				container.setLayout(null);
			status = new JPanel(null);
		  botao = new pega_botao();
			addKeyListener(botao);
        add("Center", this);
        pack();
	 			setBackground(Color.black);
            Image img = getToolkit().getImage("kuruma.gif");
	    try {
                MediaTracker tracker = new MediaTracker(this);
                tracker.addImage(img, 0);
                tracker.waitForID(0);
            } catch (Exception e) {}

            int iw = img.getWidth(this);
            int ih = img.getHeight(this);
            bi = new BufferedImage(iw, ih, BufferedImage.TYPE_INT_RGB);
            Graphics2D big = bi.createGraphics();
            big.drawImage(img,0,0,this);
				setSize(new Dimension(350, 250));
	        	setResizable(false);
				status.setSize(350, 350);
				setVisible(true);
				

    }

    public void paint(Graphics g) {

        Graphics2D g2 = (Graphics2D) g;
		  //JOptionPane.showMessageDialog(null, "");
        int w = getSize().width;
        int h = getSize().height;
		  
        int bw = bi.getWidth(this);
        int bh = bi.getHeight(this);

        g2.drawImage(bi, null, x, y);
        g2.setColor(Color.black);
        g2.setStroke(new BasicStroke(5.0f));
        //g2.drawLine(10, 10, bw-10, bh-10);
    }

    public static void main(String args[]) {
		Map = new Map_Line();
    }
	 
	 public class pega_botao implements KeyListener {
		public int desenhando = 1;
		public int sair = 0;
		public String Sout;
		public Graphics g;
		public void keyPressed(KeyEvent e){
			if (e.getKeyCode() == KeyEvent.VK_LEFT){
				//JOptionPane.showMessageDialog(null, "ESQUERDA");
				Map.x -= 5;
				Map.repaint();
			}
			if (e.getKeyCode() == KeyEvent.VK_RIGHT){
				//JOptionPane.showMessageDialog(null, "DIREITA");
				Map.x += 5;
				Map.repaint();
			}
			if (e.getKeyCode() == KeyEvent.VK_UP){
				//JOptionPane.showMessageDialog(null, "CIMA");
				Map.y -= 5;
				Map.repaint();
			}
			if (e.getKeyCode() == KeyEvent.VK_DOWN){
				//JOptionPane.showMessageDialog(null, "BAIXO");
				Map.y += 5;
				Map.repaint();
			}
		}
		public void keyTyped(KeyEvent e){}
		public void keyReleased(KeyEvent e){ 
		} 
	} 
}

E obrigado novamente à vcs…

B

quando vc implementa a interface ActionListener vc deve sobrescrever o metodo actionPerformed(ActionEvent e)

D

ActionListener eh uma interface. Logo, vai te obrigar a implementar alguns métodos. …

a classe so nao precisa implementar esse métodos se for abstrata… era isso q o compilador estava tentando te explicar.

quanto seu Jframe percebi q existem algumas coisas q acho q nao estao corretas.

O q essa linha faz :?:

add("Center", this);

pra mim isso nao faz sentido 8O

e quando vc tenta rodar esse codigo… o q acontece exatamente :?:

B

Agora sim! Esqueci desse detalhe, Brossi!
denis_arruda: é verdade, rapaz, eu esqueci isso no código, que eu tenho mania de reutilizar umas coisas e acabo esquecendo de trocar ou apagar.
Obrigado novamente, pessoal

B

Só um detalhe: o arquivo funciona, mas o .jar continua não funcionando(clico nele e nada acontece) …tô achando que é pessoal, hehe… Mas valew mesmo assim.

D

tente executar o seu jar pelo prompt do DOS

pq por la vai dar pra vc ver a mensagem de erro do q esta acontecendo.

a sintaxe do comando eh assim:

java -jar arquivo.jar

pra que isso funcione eh preciso q voce tenha o classpath configurado direitinho :!:

:wink:

Criado 14 de dezembro de 2004
Ultima resposta 16 de dez. de 2004
Respostas 9
Participantes 4