Bilder werden nicht geladen

  • Themenstarter Themenstarter dn_cmp
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
D

dn_cmp

Gast
hallo,

hab folgendes problem:
1. dieser java code funktioniert auf 1und1 webspace

Code:
Image img = getImage(getCodeBase(), "tn_img001.JPG");

2. auf meinem strato webspace funktioniert er nicht!

- das bild liegt im gleichen verzeichnis wie das applet
- unter 1. kann ich das bild beispielsweise auf ein label legen
- unter 2. wird das bild erst gar nicht geladen

außerdem hab ich folgendes ausprobiert:

Zeile 35> URL imageURL = getClass().getResource("tn_img001.JPG");
Zeile 36> System.out.println(imageURL);
Zeile 37> ImageIcon ico = new ImageIcon(imageURL);

was zu diesem fehlercode führt:
>null
>java.lang.NullPointerException
> at javax.swing.ImageIcon.<init>(Unknown Source)
> at Test.init(Test.java:37)
> at sun.applet.AppletPanel.run(Unknown Source)
> at java.lang.Thread.run(Unknown Source)

hat irgendjemand ne ahnung?

ach ja ... noch als ergänzung:
das das in zeile 37 eine NullPointerException ist die daran liegt, dass imageURL = null ist, ist schon klar

auch das hier klappt nicht (klappt ABER auf dem 1und webspace):
Code:
URL url = new URL("http","www.blabla.com", "/dev/img/tn_img001.JPG");

if (url == null) //die URL ist nicht! null!!
  {
    throw new RuntimeException("Error reading resource ");
  }
img = ImageIO.read(url);

Fehlermeldung:
java.security.AccessControlException: access denied (java.net.SocketPermission www.blabla.com:80 connect,resolve)
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkConnect(Unknown Source)
at sun.net.www.http.HttpClient.openServer(Unknown Source)
at sun.net.www.http.HttpClient.<init>(Unknown Source)
at sun.net.www.http.HttpClient.New(Unknown Source)
at sun.net.www.http.HttpClient.New(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at java.net.URL.openStream(Unknown Source)
at javax.imageio.ImageIO.read(Unknown Source)
at Test.init(Test.java:51)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

danke.
 
Wenn dein Applet nicht signiert ist darf es sich nicht zu anderen Servern verbinden als der auf dem es liegt.
 
Ich würde das gerne genauer erklährt haben.
Ich habe das selbe Problem (bei

Image img = getImage(getCodeBase(), "hallo.JPG");

// werden keine Bilder angezeigt).

Meiner Meinung nach habe ich das Applet signiert ...
 
Gast hat gesagt.:
Meiner Meinung nach habe ich das Applet signiert ...
Hast du denn ein Fenster mit einer Meldung beim Laden des Applets?

getCodeBase() zeigt auf den URL/Verzeichnis, in dem der Code des Applets liegt. Das heißt, zum Laden/Anzeigen der Bilder braucht das Applet nicht signiert werden.
Zeige mal den Code, dann werden wir schon was finden. Hast du mal in die Java-Console des Browsers gesehen, was die so ausgibt?

Gast hat gesagt.:
... eclipse gibt mir auch nur beim kompilieren Fehler aus ...
Welche?
 
Danke für die schnelle Antwort.

Der Fehler bei Eclipse lautet:

Exception in thread "main" java.lang.NullPointerException
at java.applet.Applet.getCodeBase(Unknown Source)
at CanvasML.<init>(CanvasML.java:11)
at Fenster.<init>(Fenster.java:34)
at start.main(start.java:6)

Ich möchte in Eclipse ein Spiel programmieren ... und bisher ist das Raumschiff, welches man steuert halt nur ein rotes Rechteck ..., ich fände ein gezeichnetes Schiff einfach besser.

Ohne die oben genannte Zeile läuft alles ... nur mit ihr scheitert es eben schon am kompilieren

Axon
 
Und wo liegt das Bild relativ zum Applet? getCodeBase() zeigt auf das Verzeichnis, in dem das Applet liegt.
Das heißt, das Bild müsste in genau diesem Verzeichnis liegen.
 
das Bild liegt im workspace (von eclipse) im Ordner des betreffenden Projektes ...
 
Code:
import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.*;
import java.applet.*;
import java.net.URL;

public class CanvasML extends Applet{
	public int x,y;
	int a=anithred.a;
//public Image img;
URL Base;

	public int okasten [][] = new int[a][8]; //a kaesten haben die werte: x-pos(400-800); y-pos(0); breite(10-20), hoehe ; schrittweite; Farbe1, farbe2, farbe3 

	public CanvasML(){
	    super();
	    setSize(800,400);
	    setBackground (new Color(0,0,0));
	    setVisible(true);
	   
//	Base = getCodeBase();
//	 img = getImage(Base,"draw/hallo.gif");
	}


	public void paint (Graphics g){
	g.setColor (new Color(255,0,0));
	g.fillRect(x,y,20,20);
//g.drawImage(img,20,20,this);
	g.setColor (new Color(0,255,0));
	if (Fenster.life < 600)
	{g.setColor (new Color(100,255,0));}
	if (Fenster.life < 400)
	{g.setColor (new Color(255,255,0));}
	if (Fenster.life < 200)
	{g.setColor (new Color(255,100,0));}
	if (Fenster.life < 100)
	{g.setColor (new Color(255,0,0));}
	g.fillRect(5,400,Fenster.life,20);

	for (int i=0; i<a; i++)
	    {
	    g.setColor(new Color(okasten[i][5],okasten[i][6],okasten[i][7]));
	g.fillRect(okasten[i][0],okasten[i][1],okasten[i][2],okasten[i][3]); 
	}

	}

	public static void main(String[] args) {
	}
}

*Wildcard - Code Tags eingefügt*
 
jetzt ist es natürlich kommentar, weil ich das programm habe vorhin laufen lassen ...
ansonsten, weiß ich nicht ... kann es sein, dass getCodeBase() aus irgendeinem Grund Probleme mit WindowsVista (ich schähme mich auch dafür ... am netz hänge ich dafür mit ubuntu ... aber meine eltern wollen mir nicht erlauben am neuen rechner mit meinem Linuxzeugs rum zu fuschen ...) gibt ... ?
 
ich hoffe doch, dass der Workspace bei Eclipse DAS Verzeeichnis des Applets ist ...
C:/Users/Esther/Desktop/Müll/eclipse/workspace/spiel/draw/hallo.gif
liegt das Bild
und die klassen vom projekt liegen in
C:/Users/Esther/Desktop/Müll/eclipse/workspace/spiel

hilft das?
 
Ich hatte ein gleiches Problem bis ich dieses Coding verwendet hatte:

Code:
try {
        	pbPad9.setIcon(new ImageIcon(new URL(getCodeBase(), "http://www.java-rpg.de/images/slot9.png")));
        	pbPad8.setIcon(new ImageIcon(new URL(getCodeBase(), "http://www.java-rpg.de/images/slot8.png")));
        	pbPad7.setIcon(new ImageIcon(new URL(getCodeBase(), "http://www.java-rpg.de/images/slot7.png")));
        	pbPad6.setIcon(new ImageIcon(new URL(getCodeBase(), "http://www.java-rpg.de/images/slot6.png")));
        	pbPad5.setIcon(new ImageIcon(new URL(getCodeBase(), "http://www.java-rpg.de/images/slot5.png")));
        	pbPad4.setIcon(new ImageIcon(new URL(getCodeBase(), "http://www.java-rpg.de/images/slot4.png")));
        	pbPad3.setIcon(new ImageIcon(new URL(getCodeBase(), "http://www.java-rpg.de/images/slot3.png")));
        	pbPad2.setIcon(new ImageIcon(new URL(getCodeBase(), "http://www.java-rpg.de/images/slot2.png")));
        	pbPad1.setIcon(new ImageIcon(new URL(getCodeBase(), "http://www.java-rpg.de/images/slot1.png")));
        	pbPad0.setIcon(new ImageIcon(new URL(getCodeBase(), "http://www.java-rpg.de/images/slot0.png")));
        	//pbPadEntf.setIcon(new ImageIcon(new URL(getCodeBase(), "http://www.java-rpg.de/images/slotentf.png")));
        	pbPadEntf.setIcon(new ImageIcon(new URL(getCodeBase(), "images/slotentfhand.png")));
        } catch (MalformedURLException e) {
        	e.printStackTrace();
        }

Bis dahin war es nur moeglich die Grafiken im laufenden Internetbetrieb zu sehen, bei einem lokalen Start des Applets wurden keine Grafiken geladen. Ich musste daher noch die java.policy-Datei nach /home/username (c:/windows) kopieren. Als dann funktionierten die Appletgrafiken sowohl im I-Net als auch beim lokalen Starten. Allerdings funktioniert dies derzeit nicht mit WAV-Datein, diese sind erst in der finalen I-Netversion zu hören.[/code]
 
@Axon: Probiere mal
Code:
try {
   image = getImage(new URL(getCodeBase()+"draw/hallo.jpg"));
}
catch(MalformedURLException e) {
    e.printStackTrace();
}

Und: Ein Applet kennt keine main()-Methode. Du musst mindestens die init()-Methode überschreiben.
 
Guten Morgen!

Ich verstehe das nicht ganz genau ... wie würde obiger Quelltext in meinen Quelltext eingebetet werden ... ?
 
Entschuldigung ... ich hatte die zweite seite übersehen ...
ich probiers mal und melde mich dann ...
 
Danke ... jetzt habe ich zwar keinen error ... aber auch kein bild ... gibt es da noch irgendetwas was ich probieren könnte ?
 
Ich widerrufe alles:
- ich habe vorhin kein Bild bekommen, weil ich
//image = getImage(new URL(getCodeBase()+"draw/hallo.jpg"));
als kommentar da stehen hatte.
- nun bekomme ich aber auch mit dem :
try {
image = getImage(new URL(getCodeBase()+"draw/hallo.jpg"));
}
catch(MalformedURLException e) {
e.printStackTrace();
}
den selben Fehler wie vorhin ...
 
Mein Quelltext lautet:

Code:
import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.*;
import java.applet.*;
import java.net.URL;

public class CanvasML extends Applet{
   public int x,y;
   int a=anithred.a;
public Image img;
URL Base;

   public int okasten [][] = new int[a][8]; //a kaesten haben die werte: x-pos(400-800); y-pos(0); breite(10-20), hoehe ; schrittweite; Farbe1, farbe2, farbe3

   public CanvasML(){
       super();
       setSize(800,400);
       setBackground (new Color(0,0,0));
       setVisible(true);

try {
   img = getImage(new URL(getCodeBase()+"draw/hallo.jpg"));
}
catch(MalformedURLException e) {
    e.printStackTrace();
}
   }


   public void paint (Graphics g){
   g.setColor (new Color(255,0,0));
   g.fillRect(x,y,20,20);
//g.drawImage(img,20,20,this);
   g.setColor (new Color(0,255,0));
   if (Fenster.life < 600)
   {g.setColor (new Color(100,255,0));}
   if (Fenster.life < 400)
   {g.setColor (new Color(255,255,0));}
   if (Fenster.life < 200)
   {g.setColor (new Color(255,100,0));}
   if (Fenster.life < 100)
   {g.setColor (new Color(255,0,0));}
   g.fillRect(5,400,Fenster.life,20);

   for (int i=0; i<a; i++)
       {
       g.setColor(new Color(okasten[i][5],okasten[i][6],okasten[i][7]));
   g.fillRect(okasten[i][0],okasten[i][1],okasten[i][2],okasten[i][3]);
   }

   }

   public static void main(String[] args) {
   }
}
 
Die NullPointerException bekommst du, weil Bilder nicht im Konstruktor eines Applets geladen werden, sondern in der init()-Methode. Daher sollte dein Code (hier mal aufs Wesentliche reduziert) etwa so aussehen:
Code:
import java.awt.*;
import java.applet.*; 
import java.net.*;

public class CanvasML extends Applet{ 
   private Image img;

   public void init() {
      setBackground(Color.BLACK);

      try {
         img = getImage(new URL(getCodeBase()+"draw/hallo.jpg"));
      }
      catch(MalformedURLException e) {
          e.printStackTrace();
      }
   }

   public void paint (Graphics g){ 
      g.drawImage(img,20,20,this);

   }
}

Und ich hatte oben gesagt, dass ein Applet keine main()-Methode kennt. Raus damit!
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben