Wie erzeuge ich aus einem Dateinamen-String eine Klasse ?

Hallo,

Marius hat gesagt.:
Fehlermeldung:

java.lang.ClassNotFoundException: TestPlugin

at java.net.URLClassLoader$1.run(URLClassLoader.java:199)

at java.security.AccessController.doPrivileged(Native Method)

at java.net.URLClassLoader.findClass(URLClassLoader.java:187)

at java.lang.ClassLoader.loadClass(ClassLoader.java:289)

at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)

at java.lang.ClassLoader.loadClass(ClassLoader.java:235)

at mconvert.CreateClassByName.<init>(CreateClassByName.java:11)

at mconvert.PluginManager.initiatePlugins(PluginManager.java:56)Class not found :-(
RedWing hat gesagt.:
Wobei natürlich zu beachten ist, das der CLASSPATH auf dem entsprechenden Verzeichniss
wo deine *.class Klassen liegen gesetzt ist...

Hast du den auf das entsprechende Verzeichniss gesetzt?

Gruß

Redwing
 
Die Datei liegt in dem Arbeitsverzeichnis meiner IDE (JBuilder) und ich denke doch,
dass diese den CLassPath richtig setzt, wenn ich nen Testlauf mache.

Also JA.
 
So noch ne Erweiterung:

mit diesem Code:

Code:
import javax.swing.*;
import java.awt.Toolkit;
import java.awt.event.*;

public class BeispielThread
    extends JFrame
    implements Runnable {
  private Thread thread = null;
  private JButton stopJButton = null;
  private boolean myBreak = false;

  public BeispielThread() {
    super();
    System.out.println("Class: StoppUhr | void StoppUhr()");

    getContentPane().setLayout(null);

    initComponents();
    initGUI();

    setVisible(true);
  }

  public static void main(String[] args) {
    System.out.println("Class: StoppUhr | void main(String[] args)");
    new BeispielThread();
  }

  public void run() {
    System.out.println("Class: StoppUhr | void run()");

    while (!myBreak) {
      try {
        //mach was
      }
      catch (Exception e) {}
      ;
    }
  }

  public void initComponents() {
    System.out.println("Class: StoppUhr | void initComponents()");

    setBounds(0, 0, 123, 92);
    setTitle("StopIt");
  }

  private void initGUI() {
    System.out.println("Class: StoppUhr | void initGUI()");

    stopJButton = new JButton();
    stopJButton.setBounds(60, 37, 45, 20);
    stopJButton.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        stopJButtonActionPerformed();
      }
    });
    getContentPane().add(stopJButton);
  }

  public void stopJButtonActionPerformed() {
    System.out.println("Class: StoppUhr | void stopJButtonActionPerformed()");

    myBreak = true;
  }

  private void playJButtonActionPerformed() {
    System.out.println("Class: StoppUhr | void startJButtonActionPerformed()");
    thread = new Thread(this);
    thread.start();
    myBreak = false;
  }
}

funktioniert es ! Sehe nur nicht warum es dann nicht auch bei meinem TestPlugin geht !
 
Sorry hab ich überlesen:
Deine Klasse Testplugin ist in nem package definiert namens: "mconvert"

Das musst du beim Laden der Klasse im Klassennamen natürlich mit angeben,
falls dus noch nicht getan hast:

Code:
new CreateClassByName("mconvert.TestPlugin");

Gruß

RedWing
 
Zurück