2016-05-31 6 views
-3

Ja, ich habe Online-Stackflow recherchiert glaube ich war ein Ort. Und sie haben Fragen, die "Sound/Audio" und ich glaube, auch "Bilder" spielen nicht aus ausführbaren JAR-Datei.Datei als eine ausführbare JAR-Datei - Sound/Bilder funktionieren nicht mit GUI-Taste (n)

Die WAV-Dateien sind in der JAR-Datei ... Ich habe winrar zu überprüfen.

Ich lief von der Eingabeaufforderung, und der Ton würde nicht spielen. Und einer der Fehler, die gegeben wurde, war, dass:

java.io.FileNotFoundException: C: \ Benutzer \ Bijan \ Desktop \ \ SexySounds1.wav Sounds (Das System kann den Weg nicht finden spezifiziert)

etc ... Ich muss noch etwas hinzufügen. Dass die Bilder tatsächlich auf der Schaltfläche funktionieren, wenn nur Bilder aus der ausführbaren JAR-Datei verwendet werden, scheint aber nicht zu funktionieren, wenn ich versuche, eine Schaltfläche zu verwenden, die Audiodateien (WAV-Dateien) implementiert.

Dieser Code unten setzt opt ​​für JOptionPane, und ich lege nur die Bilder in diese Box und die Audio (WAV) -Dateien. Dieser unten stehende Code ist für den Button "Relax" für das GUI-Programm.

JButton btnNewButton_1 = new JButton("Relax"); 
     btnNewButton_1.addActionListener(new ActionListener() { 
      private int counter = 0; 
      public void actionPerformed(ActionEvent e) { 

        String soundName1 = "Sounds/SexySounds1.wav"; 
        String soundName1a = "Sounds/SexySounds2a.wav"; 
        String soundName2 = "Sounds/HoShit.wav"; 
        String soundName3 = "Sounds/SexySounds2.wav"; 
        AudioInputStream audioInputStream = null; 

        JOptionPane opt = new JOptionPane(""); 
        opt.setPreferredSize(new Dimension(210, 325)); 
        final JDialog dialogBoxTitle = opt.createDialog("Sexy Woman"); 
        try{ 
        if(counter == 0){ 


         Image pic = new ImageIcon(this.getClass().getResource("/SexyWoman.png")).getImage(); 
         opt.setIcon(new ImageIcon(pic)); 
         audioInputStream = AudioSystem.getAudioInputStream(new File(soundName1).getAbsoluteFile()); 


        } 
        if(counter == 1){ 
         Image pic = new ImageIcon(this.getClass().getResource("/Sexy Woman #2.jpeg")).getImage(); 
         opt.setIcon(new ImageIcon(pic)); 
         audioInputStream = AudioSystem.getAudioInputStream(new File(soundName2).getAbsoluteFile()); 
         try { 
          Thread.sleep(500L); 


         } catch (InterruptedException e1) { 

          e1.printStackTrace(); 
         } 
         } 
        if(counter == 2){ 
         Image pic = new ImageIcon(this.getClass().getResource("/SexyWoman#3.jpeg")).getImage(); 
         opt.setIcon(new ImageIcon(pic)); 
         audioInputStream = AudioSystem.getAudioInputStream(new File(soundName1a).getAbsoluteFile()); 

         } 
        if(counter == 3){ 
         Image pic = new ImageIcon(this.getClass().getResource("/SexyWoman#4.jpeg")).getImage(); 
         opt.setIcon(new ImageIcon(pic)); 
         audioInputStream = AudioSystem.getAudioInputStream(new File(soundName3).getAbsoluteFile()); 

         } 
        if(counter == 4){ 
         Image pic = new ImageIcon(this.getClass().getResource("/Bijan's Picture.png")).getImage(); 
         opt.setIcon(new ImageIcon(pic)); 
         }} catch (UnsupportedAudioFileException e1) { 

          e1.printStackTrace(); 
         } catch (IOException e1) { 

          e1.printStackTrace(); 
         } 
         Clip clip = null; 
         try { 
          clip = AudioSystem.getClip(); 
         } catch (LineUnavailableException e1) { 

          e1.printStackTrace(); 
         } 
         try { 
          clip.open(audioInputStream); 
         } catch (LineUnavailableException e1) { 

          e1.printStackTrace(); 
         } catch (IOException e1) { 

          e1.printStackTrace(); 
         } 
         clip.start(); 
         counter++; 
        new Thread(new Runnable() 
         { 
          public void run() 
          { 
          try{ 


           Thread.sleep(1500); 

           }catch (InterruptedException e) { 

           e.printStackTrace(); 
          }}}).start(); 
           dialogBoxTitle.setVisible(true); 

      } 

      } 
     ); 

Bijan

PS: Ich wollte wirklich sehen, ob die WAV-Dateien in der JAR-Datei waren, und wenn ich ausführen, um die Eingabeaufforderung: java -jar "SuperMathBattler1a.jar" das Programm läuft. Und doch, wenn ich versuche Inhalt der JAR-Datei zu betrachten:

jar tf SuperMathBattler1a.jar

Dann ist es diesen Fehler gibt:

‚Glas‘ nicht als interner oder externer Befehl erkannt wird, betreibbar Programm oder Batch-Datei.

Ich recherchierte und was geschrieben wurde war, dass ich den "PATH" noch ändern muss, das macht keinen Sinn, da, wenn ich es laufe, es funktioniert, also sollte der Weg richtig sein? Vielleicht ist mit diesem Computer wirklich etwas passiert. Ich laufe über die Eingabeaufforderung mit:

C: \ Users \ Bijan \ Desktop>

und ich geben jar tf Dateiname.jar

JAR-Datei ist in Desktop-Ordner, noch Sichten des Inhalts der JAR-Datei tut , noch läuft es, wenn ich eingib --- java -jar "filename.jar"

Antwort

0

Ich bin ein Anfänger in Java selbst. Eine GUI erstellt eine ausführbare .jar. Ich hatte das gleiche Problem wie du. Meine GUI hat verschiedene Bilder für verschiedene Zuhörer und eine .wav für einen. Meine ausführbare .jar Datei würde sie nicht anzeigen oder abspielen. Was niemand mir gesagt hat, und ich habe es herausgefunden, indem ich einfach eine Vermutung gemacht habe. Das Jar speichert nur die Pfade zu diesen Dateien, aber die Dateien selbst müssen immer noch in den gleichen Ordner wie die JAR-Datei eingefügt werden. Wenn sie jemals getrennt werden, wird das Glas ohne sie ausgeführt.

Beispiel: Ich habe die ursprüngliche .jar im ursprünglichen Klassenordner erstellt, in dem ich alles aus JCreator ausgeführt habe. Das .jar läuft wie vorgesehen, weil alle Bilder und die .wav in diesem Ordner waren.

Ich kopiere und steckte die .jar in einen neuen Ordner exklusiv für sich auf meinem Desktop. Clicked es zu laufen, und es lief ohne die Bilder oder die WAV.

Ich kopierte und klebte die Bilder und .wav in den gleichen .jar exklusiven Ordner und es lief genau so, wie ich Bilder, Musik und alles geplant hatte.

Eine coole Sache, die ich daraus gelernt habe als Anfänger in Java ist, dass ich einen generisch betitelten Dateipfad erstellen kann, aber verschiedene Bilder in verschiedenen .jar-Ordnern verwenden, um die .jar-Datei benutzerdefinierbar zu machen. Beispiel: Zu dem gleichen vorgenannten .jar hat ich einen Zuhörer ein Freund in auf dem gui nach dem Einloggen Gesicht pic zu setzen

Der Pfad im Code friendsPic = new ImageIcon hat ("friend.jpg")..

In meinem Listener für "Log In" habe ich If (logIn.equals ("Sarah") || logIn.equals ("Deena")) hinzugefügt und dann friendsPic zum Panel hinzugefügt.

Der Unterschied ist, ich habe eine .jar mit diesem Code gemacht. Ich habe das .jar in zwei separate Ordner kopiert. Eines möchte ich an meine Freundin Deena senden, das andere an Sarah. Deenas Ordner hat das .jar und ein .jpg ihres Titels "Freund". Sarahs Ordner hat genau das gleiche .jar sowie eine .jpg von ihrem betitelten "Freund". Das .jar kennt den Unterschied zwischen den Bildern nicht, nur dass es einen Pfad zu einer Datei namens Freund hat. Ich kann beide .jars von dort entsprechenden Ordnern laufen lassen. Da Deenas Ordner Deenas mit einem Bild versehener Freund hat, zeigt ihr Krug ihr Bild. Weil Sarahs Ordner ihr Bild als Freund hat, zeigt ihr Glas ihr Bild an.

Ich hoffe, dass dies hilft, auch wenn es nicht die genaue Antwort war, die ein erfahrenerer Programmierer hätte geben können.

+0

Die Sache zuerst danke Ihnen für Ihren Versuch, mir zu helfen. Aber ich bin verwirrt. Denn nachdem ich die JAR-Datei in Ordnung gebracht habe, werde ich sie in eine reguläre EXE-Datei konvertieren, so dass sie nur mit einem Doppelklick geöffnet werden kann. Die Art und Weise erklärt, ich bin nicht sicher, aber ich würde eine andere JAR-Datei erstellen und es würde nur als eine ausführbare JAR-Datei in einem neu erstellten Ordner funktionieren, aber was, wenn ich das in eine EXE-Datei konvertieren wird es immer noch ich 'ich bin mir nicht sicher. Also kannst du mir bitte erklären, was ich tun soll Ich bin verwirrt, also füge ich einen anderen Ordner und meinen Pfad hinzu ... könntest du es bitte mehr kaputt machen ... – Bjon123abc

+0

So kann ich eine JAR-Datei in einen anderen Ordner schreiben, den du geschrieben hast dass die Datei ausgeführt wird, wenn sie getrennt ist, also ist im Grunde Ihre Logik, dass die Dateien getrennt werden und der Sound nicht abgespielt wird. Aber die Bilder funktionieren trotzdem. Es ist nur das Audio wird nicht funktionieren. Es hat etwas mit der gui-Taste zu tun. Wenn ich voreingestellte Bilder habe, die nicht per Knopfdruck umgesetzt werden, werden Bilder angezeigt. Wenn ich Bilder selbst mit Knopfdruck verwende, funktionieren Bilder. Wenn ich Audio mit der Taste drücke, scheint Audio nicht zu spielen. Ich schätze du meinst den Pfad wie in Sounds/SexySounds1.wav oder? – Bjon123abc

+0

Der Projektordner ist wie folgt aufgebaut: AwesomeGuiRpg1a (Projektname)> AwesomeGuiRpg1aCharacterPics (Quellordner)> AwesomeGuiProject1aPackage (Paket)> und innerhalb des Pakets gibt es 11 files.java ... innerhalb des Projektordners AwesomeGuiRpg1a habe ich auch 4 Quelle folders --- pic, Sounds, Sounds2, dataSaveLoad ... also merke ich, wenn ich die jar-Datei erstelle, welche Dateien in das jar geladen werden, und es zeigt WAV-Dateien an. Also nehme ich die wav an Dateien befinden sich alle in der JAR-Datei. Was bedeutet Pfad? Meinst du ich? – Bjon123abc

Verwandte Themen