Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo,
ich habe ein kleines problem und zwar, wenn ich mein Programm über Internet Explorer ausführe, dann sind keine Bilder geladen, in NetBeans werden sie aber geladen.
Im Archiv .jar sind die Bilder vorhanden "img/bild.png" u.s.w.
Hier der Speicherort, wo die Bilder abgelegt sind:
Code:
C:\Users\User\Documents\NetBeansProjects\Game\img
Wenn ich nun mein Projekt in NetBeans starte, dann werden ja die Bilder angezeigt, nur wenn ich mein Programm über Internet Explorer ausführe, dann werden keine Bilder angezeigt.
Kann mir Vielleicht jemand helfen, wo das Problem liegen könnte?
Ich danke euch schonmal für die Hilfe.
das die bilder mit im jar liegen stimmt schon soweit ...
natürlich müssen diese auch relativ zur klasse im richtigen verzeichnis sein
das problem ist vielmehr der aufruf
um daten innerhalb eines jars in einem applet zu laden brauchst du ClassLoader.getResource() bzw getResourceAsStream() ... denn sonst versucht das applet die daten außerhalb des jars zu suchen ... was natürlich fehlschlägt ...
es liegt also nicht daran wie du dein applet auslieferst ... sondern daran wie du die daten innerhalb des applets laden willst
ImageIcon b = new ImageIcon(Game.class.getResource("img/bild1.png"));
bild1 = b.getImage();
leider bekomme ich eine fehlermeldung beim Kompilieren:
Java:
Exception in thread "main" java.lang.NullPointerException
Kann mir Vielleicht jemand ein beispiel Posten, wie ich das Problem lösen könnte?
Auf der Seite Grafikdateien laden und anzeigen ? Byte-Welt Wiki hab ich schon bereits nachgelesen, leider bekomm ich das irgendwie nicht richtig hin.
Spätestens, wenn du das Applet ausführen wolltest, wäre dir die Version aus deinem Eingangspost mit einer [JAPI]AccessControlException[/JAPI] um die Ohren geflogen.
[JAPI]Toolkit[/JAPI] sucht auf der Client-Festplatte nach den Bilddateien, was ein Applet aber nicht darf...
Danke Dir.
Ich hab noch ein kleines Problem:
Wenn ich mein Programm auf meinem Server hochlade und es per Browser starten möchte, dann wird nur die Startdatei heruntergeladen und kann dann natürlich nicht gestartet werden, da die .jar datei ja dann nicht gefunden wereden kann.
NetBeans erstellt mir folgende dateien:
Wenn ich die launch.html über meinem Server ausführe, dann befindet sich auf der Seite einen Button, um das Programm zu starten.
Wenn ich dann dort drauf klicke, dann fragt mich FireFox ob ich es speichern oder direkt öffnen möchte.
Ich Klick dann auf öffnen und erhalte dann folgende fehlermeldung:
Code:
java.io.FileNotFoundException: C:\Users\USER~1\AppData\Local\Temp\Game.jar (Das System kann die angegebene Datei nicht finden)
Wenn ich mein Programm auf meinem Server hochlade und es per Browser starten möchte, dann wird nur die Startdatei heruntergeladen und kann dann natürlich nicht gestartet werden, da die .jar datei ja dann nicht gefunden wereden kann.
Danke Dir.
Wenn ich es direkt im Browser darstellen lass, dann erhalte ich eine Fehlermeldung:
Code:
Fehler. Klicken Sie, um weitere Informationen zu erhalten.
Hier mal meine Game und Solitaire.java Datei:
Game.java:
Java:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package game;
import java.applet.*;
import java.awt.*;
/**
*
* @author Christian
*/
public class Game extends Applet {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
new Solitaire();
}
}
Solitaire.java
Java:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package game;
import javax.swing.JFrame;
/**
*
* @author Christian
*/
public class Solitaire extends JFrame {
public Solitaire() {
setSize(400,400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
add(new SolitaireCanvas());
setVisible(true);
}
}
Ich benutze bei Solitaire.java JFrame, muss ich das ändern um mein Programm direkt im Browser anzeigen lassen zu können?
Sry, ich war vorhin etwas durcheinander, deshalb kam da nur misst raus.
Ein Applet kennt keine main()-Methode. Es wird vom Browser über die init()-Methode initialisiert.
Versuchs mal so:
Java:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package game;
import javax.swing.*;
/**
*
* @author Christian
*/
public class Game extends JApplet {
/**
* Initialisiert das Applet.
*/
public void init() {
// TODO code application logic here
new Solitaire();
}
}
Dein Applet öffnet dann deinen JFrame.
Wobei ich dann aber die Zeile 14 ändern würde in:
[JAVA=14]setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);[/code]
Sonst fliegt dir auch hier dein Code mit einer [JAPI]AccessControlException[/JAPI] um die Ohren, weil ein Applet die VM nicht beenden darf.
Wenn dein Applet nicht in einem Fenster, sondern direkt im Browser laufen soll, ersetzt du Zeile 20 mit:
[java=20]add(new SolitaireCanvas());[/code]
Es kommt aber auch darauf an, von welchem Typ dein Objekt SolitaireCanvas ist.
Ich danke dir für die antwort.
Ich hab das jetzt mal so geändert wie du es beschrieben hast, wenn ich dann mein Projekt ausführe, erhalte ich eine fehlermeldung:
Jetzt hab ich das mal alles mit Eclipse erstellt und nun funktioniert alles.
Irgendwie blick ich bei NetBeans nicht durch, naja, jetzt funktioniert es wenigstens.