# Bekomme NoSuchElement Exception



## foofolan (4. Dez 2009)

Hallo,
habe ein Applet geschrieben, welches in der eclipse ID funktioniert. Auf dem Webservre bekomme ich die Fehlermeldung "NoSuchElementexception", was habe ich falsch gemacht? hier die Daten:


```
import java.applet.Applet; 
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics; 
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Collections;
import java.util.Enumeration;

@SuppressWarnings("serial")
public class IPMACAPPLET extends Applet  {
	
	  Font   f1 = new Font( "Helvetica", Font.BOLD, 13 );
	  Color  c1 = new Color( 255, 0, 0 );
	  Color  c2 = new Color( 0, 0, 255 );
	  String ip="";
	  String mac="";
	  
	  public static String getMacAddress() throws SocketException 
		{ 
		  String result = ""; 
		 
		  for ( NetworkInterface ni : Collections.list( NetworkInterface.getNetworkInterfaces()) ) 
		  { 
		    byte[] hardwareAddress = ni.getHardwareAddress(); 
		 
		    if ( hardwareAddress != null ) 
		    { 
		      for ( int i = 0; i < hardwareAddress.length; i++ ) 
		        result += String.format( (i==0?"":"-")+"%02X", hardwareAddress[i] ); 
		 
		      return "MAC ADRESSE: "+result; 
		    } 
		  } 
		 
		  return result; 
		}  
	  
	  
	  public static String getIPs() throws SocketException{
			Enumeration nets;
			String ergebnis="";
			
			
			
				nets = NetworkInterface.getNetworkInterfaces();
				NetworkInterface iface = (NetworkInterface) nets.nextElement();
				Enumeration addresses = iface.getInetAddresses();
				InetAddress addr = (InetAddress) addresses.nextElement();
				
				InetAddress addr2 = (InetAddress) addresses.nextElement();
				
				
				
				String IP_NUMMER = addr2.getHostAddress();
				String HOSTNAME = addr2.getCanonicalHostName();
				ergebnis="IP: "+IP_NUMMER+"    "+"Hostname: "+ HOSTNAME;			
				return ergebnis;
			
			}
		
	  
	  
	public void init(){ 
		
		try {
			mac=getMacAddress();
			ip=getIPs();
		} catch (SocketException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		} 
	
	
	   /* @Override */ public void paint( Graphics g ) 

	   {  
		      g.setColor( c1 );
		      g.setFont( f1 );
		      g.drawString( mac,20,20);
		      g.setColor( c2 );
		      g.drawString( ip,20,50);
		     
		  }
	  
	   
	   }
```

So habe ich es eingebunden:

<APPLET CODE="IPMACAPPLET.class" WIDTH=500 HEIGHT=200>
<PARAM NAME="ACTION" VALUE="AUTO">
</APPLET> 


Applet crashed!


----------



## Empire Phoenix (5. Dez 2009)

stacktrace bitte (Browser mit console nehmen, bzw entwicklerconsole anschalten), notfalls den outstream/errorstream von system umleiten in eine Datei (und dem applet die rechte geben)


----------



## Ebenius (5. Dez 2009)

Empire Phoenix hat gesagt.:


> stacktrace bitte (Browser mit console nehmen, bzw entwicklerconsole anschalten), notfalls den outstream/errorstream von system umleiten in eine Datei (und dem applet die rechte geben)


Brauchste gar nicht. Der Fehler passiert ziemlich sicher in Zeile 48. Zugriff auf [c]nextElement()[/c] ohne vorher [c]hasMoreElements()[/c] zu überprüfen. Das sollte man nie tun.

Der Grund, warum Dein Applet keine Netzwerkschnittstellen hat ist der, dass das Applet im Browser aus Sicherheitsgründen in einer Sandbox läuft. Innerhalb dieser Sandbox sind verschiedene Dinge nicht erlaubt; zum Beispiel Dateizugriff. Wenn das Applet mehr Rechte benötigt, musst Du es signieren. Wie das geht findest Du in den FAQ heraus.

Hilft das weiter?

Ebenius


----------



## malgutentag (5. Dez 2009)

dazu hab ich auch mal ne Frage: 

Was ist denn die einfachste Möglichkeit die IP auszulesen, also mit einem Applet. Muss es dann unbedingt signiert werden? 
Und was könnte der Fragesteller im Code ändern, das es auch funktioniert, am besten de Code dazu.

Vielen Dank


----------



## nochmalgutentag (5. Dez 2009)

Kann es nicht sein, das er die Bibliothken vergesen hat mit auf den Server zu kopieren? Ich glaub er hat nur die .class Datei auf dem Server?
vielleicht liegt es ja daran?


----------



## foofolan (6. Dez 2009)

Hallo keiner eine Lösung, ich bekomme die MAC genuau wie im Code geliefert.
Und das Applet ist nichtz signiert! und außerdem habe ich ein Applet das die IP liefert, das auch nicht signiert ist. es geht also auch OHNE Signierung!

Wenn ich "hasmore Elemnts" benutze kommt die richtige IP auch nicht raus? was ist da noch zu machen?

Ich denke ein Socket aufbauen, und darüber vielleicht?


----------

