2013-05-22 5 views
3

Я следил за 10 различными учебниками, и ни один из них, похоже, не сделал этого, мой исполняемый файл jar просто не работает.Почему мой файл Runnable Jar не работает

Моя игра работает нормально, когда я запускаю его в затмении, и я был в состоянии сделать это в работоспособную банке файл, который работал только день или два назад, и не изменился слишком много коды. Когда я пытаюсь запустить .jar, значок java появляется в нижней части экрана, но потом ничего не происходит.

Это моя пусковая установка не открывается (если я запускаю без запуска, она работает нормально), ошибок нет, я открываю терминал или затмение.

package com.l3g3nds.threed; 

import java.awt.Color; 
import java.awt.Dimension; 
import java.awt.Rectangle; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.awt.event.KeyListener; 
import java.awt.event.MouseEvent; 
import java.awt.event.MouseListener; 
import java.awt.event.MouseMotionListener; 
import java.io.File; 

import javax.swing.ImageIcon; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.SwingUtilities; 
import javax.swing.UIManager; 

public class Launcher extends JFrame implements MouseListener, MouseMotionListener { 
    private static final long serialVersionUID = 1L; 

    protected JPanel window = new JPanel(); 
    // private JButton play, options, help, quit, credits; 
    // private Rectangle rplay, roptions, rhelp, rquit, rcredits; 

    protected int buttonWidth = 120; 
    protected int buttonHeight = 40; 

    public Launcher(int id) { 
     JPanel panel = (JPanel) getContentPane(); 

     JLabel label = new JLabel(); 
     label.setIcon(new ImageIcon("res/Launcher/schoolbackground.png")); 
     System.out.println(Display.lScreen()); 
     if (Display.lScreen() == 5) 
      label.setIcon(new ImageIcon("res/Launcher/quit1.png")); 
     if (Display.lScreen() == 4) 
      label.setIcon(new ImageIcon("res/Launcher/credits1.png")); 
     if (Display.lScreen() == 3) 
      label.setIcon(new ImageIcon("res/Launcher/options1.png")); 
     if (Display.lScreen() == 2) 
      label.setIcon(new ImageIcon("res/Launcher/help1.png")); 
     if (Display.lScreen() == 1) 
      label.setIcon(new ImageIcon("res/Launcher/beginrunning1.png")); 
     panel.add(label); 

     setUndecorated(true); 

     System.out.println("launched"); 
     setDefaultCloseOperation(DISPOSE_ON_CLOSE); 
     setLocationRelativeTo(null); 
     pack(); 
     setVisible(true); 

     addMouseListener(this); 
     addMouseMotionListener(this); 

    } 

    public void drawButtons() { 
    } 

    @Override 
    public void mouseClicked(MouseEvent e) { 
     int cx = e.getX(); 
     int cy = e.getY(); 
     if (cx >= 11 && cy >= 14 && cx <= 214 && cy <= 44) { 
      dispose(); 
      new RunGame(); 
     } else if (cx >= 11 && cy >= 66 && cx <= 70 && cy <= 96) { 
      //open help 
     } else if (cx >= 11 && cy >= 119 && cx <= 119 && cy <= 144) { 
      this.dispose(); 
      new Options(); 
     } else if (cx >= 11 && cy >= 170 && cx <= 114 && cy <= 200) { 
      //open credits 
     } else if (cx >= 11 && cy >= 222 && cx <= 74 && cy <= 254) { 
      System.exit(0); 
     } 

    } 

    @Override 
    public void mouseEntered(MouseEvent e) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void mouseExited(MouseEvent e) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void mousePressed(MouseEvent e) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void mouseReleased(MouseEvent e) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void mouseDragged(MouseEvent arg0) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void mouseMoved(MouseEvent e) { 
     // TODO Auto-generated method stub 
     int mx = e.getX(); 
     int my = e.getY(); 
     if (mx >= 11 && my >= 14 && mx <= 214 && my <= 44) { 
      if (Display.lScreen() != 1) { 
       Display.setlScreen(1); 
       new Launcher(1); 
       System.out.println("1"); 
      } 
     } else if (mx >= 11 && my >= 66 && mx <= 70 && my <= 96) { 
      if (Display.lScreen() != 2) { 
       Display.setlScreen(2); 
       new Launcher(1); 
       System.out.println("2"); 
      } 
     } else if (mx >= 11 && my >= 119 && mx <= 119 && my <= 144) { 
      if (Display.lScreen() != 3) { 
       Display.setlScreen(3); 
       new Launcher(1); 
       System.out.println("3"); 
      } 
     } else if (mx >= 11 && my >= 170 && mx <= 114 && my <= 200) { 
      if (Display.lScreen() != 4) { 
       Display.setlScreen(4); 
       new Launcher(1); 
       System.out.println("4"); 
      } 
     } else if (mx >= 11 && my >= 222 && mx <= 74 && my <= 254) { 
      if (Display.lScreen() != 5) { 
       Display.setlScreen(5); 
       new Launcher(1); 
       System.out.println("5"); 
      } 
     } 
     else { 
      if (Display.lScreen() != 0) { 
       Display.setlScreen(0); 
       new Launcher(1); 
       System.out.println("0"); 
      } 
     } 
    } 
} 

Я использую макинтош, если это помогает ...

Вот скриншоты, которые я взял из точных шагов, которые я взял

Некоторые предупреждения, которые я получил (я думаю, что они только из-за неиспользуемых переменных, я получил это сообщение раньше, когда я был в состоянии получить мой .jar работать)

Это кажется, что верхняя часть моего экран вместе с иконкой java внизу, но ничего больше не происходит.

-Спасибо

+4

Но вы оставили в стороне самый важный бит информации. Вы заявляете, что он работал день или два назад, и не изменил слишком много кода. ", Но то, что вы действительно изменили, на самом деле очень важно. Итак ... что именно вы изменили? Без большей информации о ключе, я думаю, что мы обречены на то, что не можем вам помочь. Обратите внимание: вы можете удалить изображения, которые вы опубликовали, поскольку они вообще не способствуют поиску источника вашей проблемы. –

+0

Вы недавно добавили в приложение какие-либо банки или классы? – jahroy

+7

запустите файл jar из командной строки (используя java -jar theJar.jar) и посмотрите, есть ли у вас ошибка. –

ответ

14

Я предполагаю, что вы делаете приложения с графическим интерфейсом, а также запуском Jar, нажав на нее? Много раз, если приложение GUI имеет ошибку при запуске, оно явно не делает ничего подобного, например, появляется сообщение об ошибке, потому что у него не было возможности построить какой-либо графический интерфейс, чтобы сообщить об ошибке. Я бы предположил, что что-то, что вы изменили, вызывает исключение при запуске, и это сообщение не видно, потому что вы запускаете банку, нажимая на нее.

Если вы запустите Jar из терминала (spotlight: «terminal»), вы сможете увидеть трассировку стека, которая предотвратит запуск Jar, и, надеюсь, это поможет вам отладить дальнейшие действия.

$ cd directory/of/jar 
$ java -jar name_of_jar.jar 
    .... stack trace should appear here, or program should run 

Вы также можете попытаться поймать исключение в методе main и display a GUI alert, однако это не работает, если возбуждается исключение, прежде чем метод main начинается (например, во время загрузки класса). Другими словами, это приятно, но не полностью решает проблему. Вы все равно можете запустить Jar из командной строки.

public static void main(String[] args) { 
    try { 
    // body of main method goes here, including any other error handling 
    } catch (Throwable t) { 
    JOptionPane.showMessageDialog(
     null, t.getClass().getSimpleName() + ": " + t.getMessage()); 
    throw t; // don't suppress Throwable 
    } 
} 
+0

Итак, он запускается (распечатывается, что он запустился), но фактическая пусковая установка для игры не подходит – java

+0

Ahh Я нашел, где моя проблема, но не стоит знаете, как это исправить. – java

+0

@java - Опубликовать трассировку стека, отредактировав свой вопрос. Если вы разместите всю трассировку стека, вам будет легко определить вашу проблему. – jahroy

3

Чтобы запустить .jar файл, в командной строке напиши:

java -jar 'jar_file'.jar 

Где 'jar_file' это имя файла банку без всяких кавычек. В вашем случае это run.jar.

.jar файлы .zip архивы, которые могут запутать операционную систему

Jar file format

+0

Как это смущает ОС? (И даже если бы это было так, как это относится к вопросу? Вероятно, вам нужно предоставить более подробную информацию, OP сказал, что он работал.) –

+0

Не удалось получить доступ к jarfile {Run.jar} – java

+0

Удалить фигурные скобки, извините – Isaac

0

Попробуйте удалить файлы .class из папки bin и перезапустить проект и очистить проект. Это проблема с eclipse. Даже когда я сталкивался с той же проблемой, я удалил файлы и следил за указанным процессом.

+1

Этот вопрос уже разрешен. Оказалось, что пользователь сделал типографскую ошибку в капитализации имени файла (см. Http://chat.stackoverflow.com/rooms/30447/discussion-between-java-and-jahroy). –