salve a tutti
premetto che sono in niubbio in java e ancora di piu in eclipse
allora le cose stanno così, sto imparando java da solo e sto facendo dei vecchi corsi di java che mi ha dato un amico (in inglese)...
in un esercizio il cui scopo è quello di caricare un file dal disco rigido e mostrarlo a video in una finestra di windows, eclipse mi compila correttamente le classi, ma poi quando mi esegue il programma mi crea la finestra a schermo, ma non mi mostra la foto caricata, e fin qui ho pensato che c'era un qualche errrore.. ma poi dopo aver controllato e visto che non c'era errore, ho fatto in questo modo, mi sono aperto la console di windows, sono andato nella cartella che contiene i file class, ho dato, da riga di comando java blabla.class et voilà il programma funzia e si vede la foto..
allora mi sono chiesto perchè eclipse non riusciva fare il run dei file, e sono andato con il debug (che però non conosco per niente )
e li mi da' le seguenti indicazioni
URLClassLoader$1.run()line:not available
ed altre
e mi chiede di dargli un source path (allego foto dello schermo)
qualcuno mi sa dire come mai questo accade?
mille grazie e considerate che ci sto lavorando sopra da poco piu di un mese..

ps non sono preoccupato per l'errore... ma non vorrei che ci fosse
qualcosa da settare anche se fino ad adesso le classi che avevo
scritto (poco più complesse di hallo world a dire la verita) andavano
tutte bene..
qui ci sono i codici

1 classe
import java.awt.Component;
import java.awt.Toolkit;
import java.awt.Image;
import java.awt.MediaTracker;


@SuppressWarnings("serial")
public class ImageLoader extends Component {
public Image loadImageFromFile(String filename) {
Image image = null;
Toolkit tk = Toolkit.getDefaultToolkit();
image = tk.getImage(filename);
waitForImage(image);
return(image);
}
public void waitForImage(Image image) {
MediaTracker mt = new MediaTracker(this);
mt.addImage(image,1);
try {
mt.waitForAll();
} catch(Exception e) {
e.printStackTrace();
System.exit(0);
}
}
}

2 classe

import java.awt.Canvas;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;


@SuppressWarnings("serial")
class DrawMemoryCanvas extends Canvas {
int height;
int width;
Image blueMarble;
Image image;
DrawMemoryCanvas() {
ImageLoader il = new ImageLoader();
blueMarble = il.loadImageFromFile("bluemarble.png");
height = blueMarble.getHeight(this);
width = blueMarble.getHeight(this);
setSize(width,height);
}
public void paint(Graphics g) {
if(image == null) {
image = createImage(width,height);
Graphics ig = image.getGraphics();
ig.drawImage(blueMarble,0,0,this);
Font font = new Font("Times New Roman",Font.BOLD,32);
ig.setFont(font);
ig.setColor(Color.white);
ig.drawString("hello, world",50,50);
}
g.drawImage(image,0,0,this);
}
}

3 classe con main

import java.awt.Frame;
import java.awt.AWTEvent;
import java.awt.event.WindowEvent;

@SuppressWarnings("serial")
public class DrawMemory extends Frame {
public static void main(String arg[]) {
new DrawMemory();
}
DrawMemory() {
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
DrawMemoryCanvas dmcanvas = new DrawMemoryCanvas();
add(dmcanvas);
pack();
setVisible(true);
}
public void processWindowEvent(WindowEvent event) {
if(event.getID() == WindowEvent.WINDOW_CLOSING)
System.exit(0);
}
}