PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Java Applet Problem



frank trabin
24.03.2012, 00:37
Hallo,

ich versuche mir gerade ein Java Applet zu basteln um einen cmd befehl übergeben zu lassen. Hab mit Java erst angefangen und nicht wirklich ahnung.
Den meisten code hab ich mich zusammen gegooglet.

Mein Problem, in Eclipse lässt sich der code ausführen bringt keine fehler und funktioniert.
wenn ich dann ne .jar drauß mache meldet der appletviewer "Klasse ipconfig.class kann nicht gefunden werden".

Wär nett wenn mir jemand helfen könnte:lol
Kann ja bei dem bisschen code an nicht viel liegen.



package ipconfig;

public class ipconfig {
public static void main(String[] args) {
try {
Process cmd = Runtime.getRuntime().exec("ipconfig /all");
cmd.waitFor();
System.out.println(cmd.exitValue());
}
catch (Exception err) {
err.printStackTrace();
}

}
}
und damit versuch ichs aufzurufen


<html>
<body>
<object classid="java:ipconfig.class"
codetype="application/java-vm" width="1" height="1" />
</object>
</body>
</html>

loewenherz
24.03.2012, 06:36
Liegt die IPConfig Klasse überhaupt in kompilierter Form vor? Hast du das JDR oder JDK drauf? Der Code da oben ist ja sowas von.... Anfängerfehler ist zu harmlos. Das ist einfach - "ich kopier mal alles zusammen und hoffe das irgendwas funktioniert".... schrecklich....

Fang am Besten von vorne an, so wird das nie was.
Du hast Glück. Bin gerade selber an einem etwas größerem Applet dran, daher hier ein kleiner Auszug für dich
Mach Eclipse zu und öffnen einen Editor.



package loewenherz.examples.applet;
import java.applet.Applet;
import java.awt.Graphics;
import java.awt.*;


public class AppletBeispiel extends Applet

{

public void paint (Graphics g)

{
g.drawRect (0, 0, size().width-1, size().height-1);
g.drawString ("foobar", 10, 15);

}

}


1. Die Datei als AppletBeispiel.java nach /loewenherz/examples/applet/AppletBeispiel.java ablegen
2. Mit javac.exe AppletBeispiel.java kompilieren



<applet code="loewenherz/examples/applet/AppletBeispiel.class" width="200" height="40" alt="DAS Applet">

1. Datei nach /index.html ablegen
So sieht ein Applet aus.



Und so könnte man es dann richtig machen(Hab es extra für dich in Eclipse gemacht und das Projekt hochgeladen: http://www.xup.in/dl,14360853/Notepad.zip/)
Du wirst schnell merken, das du nur aus der IDE herraus nativen Code starten kannst(hier notepad.exe), aber aus einem Browser sind.
Das liegt daran das das Applet noch nicht signiert ist, das geht recht einfach - google mal.


package loewenherz.examples.applet;

import javax.swing.JApplet;
import java.awt.GridBagLayout;
import javax.swing.JButton;
import java.awt.GridBagConstraints;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.io.IOException;

@SuppressWarnings("serial")
public class Gui extends JApplet {

/**
* Create the applet.
*/
public Gui() {
GridBagLayout gridBagLayout = new GridBagLayout();
gridBagLayout.columnWidths = new int[]{0, 0, 0};
gridBagLayout.rowHeights = new int[]{0, 0, 0, 0};
gridBagLayout.columnWeights = new double[]{0.0, 0.0, Double.MIN_VALUE};
gridBagLayout.rowWeights = new double[]{0.0, 0.0, 0.0, Double.MIN_VALUE};
getContentPane().setLayout(gridBagLayout);

JButton btnNewButton = new JButton("New button");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0)
{
String command = "notepad.exe";
try {
Runtime.getRuntime().exec(command);

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
});
GridBagConstraints gbc_btnNewButton = new GridBagConstraints();
gbc_btnNewButton.gridx = 1;
gbc_btnNewButton.gridy = 2;
getContentPane().add(btnNewButton, gbc_btnNewButton);

}

}



btw. das ist nicht best practice. Bei Applets sollte man swing und awt nicht vermischen - habs nur schnell zusammen gehackt.

frank trabin
25.03.2012, 16:02
danke schön:p

werd mirs heute abend mal genauer anschauen.


Liegt die IPConfig Klasse überhaupt in kompilierter Form vor?ja


Hast du das JDR oder JDK draufJDK


Du wirst schnell merken, das du nur aus der IDE herraus nativen Code starten kannst(hier notepad.exe), aber aus einem Browser sind.
Das liegt daran das das Applet noch nicht signiert ist, das geht recht einfach - google mal.ja ich weiß. hatte es auch schon signiert.

das ganze soll einen winzigen java drive by für lokale netzwerke geben. Also sprich, ich breche ins Wlan ein, betreibe ein bisschen dns spoofing und starte einen apache server auf meinem rechner. wenn das opfer eine url in den browser tippt muss es dann quasi zuerst an meinen script vorbei und wird dann sofort auf die entsprechende seite weitergeleitet nachdem mein cmd befehl abgesetzt wurde. Also ich brauche eigentlich nur den ein leeres applet das mir den cmd befehl übergibt und sich bei bestätigung des Zertifikats automatisch startet.