Zwei Anwendungen kommen sich in die Quere!

leonReif

Neues Mitglied
Hallo zusammen,

ich habe eine Anwendung, die so aussieht:

class XYZView extends FrameView
class XYZApp extends SingleFrameApplication

Diese Anwendung befindet sich in eine Jar-Datei.

Ich möchte diese Anwendung aus einem anderen Java-Programm aufrufen. Es „funktioniert“ es auch!

Ich habe diese Jar-Datei in der zweiten Anwendung eingebunden. Die zweite Anwendung sieht so aus:

class ABCView extends FrameView
class ABCApp extends SingleFrameApplication

Das eigentliche Problem:

Wenn man die erste Anwendung (XYZApp) aus der zweiten Anwendung aufruft und anschließend schließt, dann kann ich nicht mehr in der zweiten Anwendung (ABCApp) ein Unterfenster öffnen. Es knallt genau an folgender Stelle in der Klasse Class.java unter:

public T cast(Object obj) {
if (obj != null && !isInstance(obj))
throw new ClassCastException();
return (T) obj;
}

Fehlermeldung:
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException at java.lang.Class.cast(Class.java:2990)

Wenn XYZApp einmal aufrufen wird, dann bleibt das „obj“ auf XYZApp stehen. Wenn ich nun versuche in der zweiten Anwendung über einem Button ein weiteres Fenster öffnen, dann wird in der Methode „T cast(Object obj)“ ein ABCApp erwartet und NICHT XYZApp!! Ich rufe sogar beim schließen der ersten Anwendung (XYZApp) folgendes auf:
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

Was kann ich tun, dass beim Aufruf der Methode „T cast(Object obj)“ das richtige Objekt reinkommt?

Vielen Dank im Voraus
 

Marco13

Top Contributor
Von wo wird die Methode denn aufgerufen? Kompletter Stacktrace und den relevanten Teil des Codes, der sich auf die erste Zeile des Stacktraces bezieht, die von dir stammt.
 

leonReif

Neues Mitglied
Hallo Marco,

ich habe in der zweiten Anwendung (ABCView) einen Button. Durch den Button-Click wird eine Methode
Java:
show()
aufgerufen. Diese Methode sorgt dafür, dass die erste Anwendung geöffnet wird.

Java:
private void jMenuHelpActionPerformed(java.awt.event.ActionEvent evt){                                          
         HelperClass.show();
    }

Die show-Methode sieht so aus:
Java:
show(){
   XYZApp.main(new String[]{""});
}

In Zukunft soll die erste Anwendung (ABCView bzw. ABCApp) in allen Anwendungen als jar eingebunden und benutzt.

Hier ist der Code von XYZApp (erste Anwendung, die in allen Anwendungen eingebunden werden soll):

Java:
package de.XYZApp;

import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.UIManager;
import org.jdesktop.application.Application;
import org.jdesktop.application.SingleFrameApplication;
import org.jvnet.substance.SubstanceLookAndFeel;

/**
 * The main class of the application.
 */
public class XYZApp extends SingleFrameApplication {

    private static JFrame frame = null;
    /**
     * At startup create and show the main frame of the application.
     */
    @Override protected void startup() {
        show(new XYZView(this));
    }

    /**
     * This method is to initialize the specified window by injecting resources.
     * Windows shown in our application come fully initialized from the GUI
     * builder, so this additional configuration is not needed.
     */
    @Override
    protected void configureWindow(java.awt.Window root) {
        frame = XYZApp.getApplication().getMainFrame();
        frame.addWindowListener(new WindowAdapter(){

            @Override
            public void windowClosing(WindowEvent e) {
                frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
            }

            @Override
            public void windowClosed(WindowEvent e) {
            }
        });
    }

    /**
     * A convenient static getter for the application instance.
     * @return the instance of XYZApp
     */
    public static XYZApp getApplication() {
        return Application.getInstance(XYZApp.class);
    }

    /**
     * Main method launching the application.
     */
    public static void main(String[] args)
    {
            JFrame.setDefaultLookAndFeelDecorated(true);
            JDialog.setDefaultLookAndFeelDecorated(true);
            UIManager.put(SubstanceLookAndFeel.SHOW_EXTRA_WIDGETS, false);
            UIManager.put(SubstanceLookAndFeel.WATERMARK_VISIBLE, false);
            SubstanceLookAndFeel.setToUseConstantThemesOnDialogs(true);
            launch(XYZApp.class, args);
    }
}

Hier ist der Code von ABCApp:

Java:
package abc;

import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.UIManager;
import org.jdesktop.application.Application;
import org.jdesktop.application.SingleFrameApplication;
import org.jvnet.substance.SubstanceLookAndFeel;

/**
 * The main class of the application.
 */
public class ABCApp extends SingleFrameApplication {

    /**
     * At startup create and show the main frame of the application.
     */
    @Override protected void startup() {
        show(new ABCView(this));
    }

    /**
     * This method is to initialize the specified window by injecting resources.
     * Windows shown in our application come fully initialized from the GUI
     * builder, so this additional configuration is not needed.
     */
    @Override protected void configureWindow(java.awt.Window root) {

        ABCApp.getApplication().getMainFrame().addWindowListener(new WindowAdapter(){

            public void windowOpened(WindowEvent e) {
			
            }
        });
    }

    /**
     * A convenient static getter for the application instance.
     * @return the instance of ABCApp
     */
    public static ABCApp getApplication() {
        return Application.getInstance(ABCApp.class);
    }

    /**
     * Main method launching the application.
     */
    public static void main(String[] args) {

        JFrame.setDefaultLookAndFeelDecorated(true);
        JDialog.setDefaultLookAndFeelDecorated(true);
        UIManager.put(SubstanceLookAndFeel.SHOW_EXTRA_WIDGETS, false);
        UIManager.put(SubstanceLookAndFeel.WATERMARK_VISIBLE, false);
        SubstanceLookAndFeel.setToUseConstantThemesOnDialogs(true);
        launch(ABCApp.class, args);
    }
}

Wenn ich nur einmal die Methode show() aufrufe, dann kann ich in der zweiten Anwendung andere Sub-Fenster nicht mehr öffnen, da das "obj" in der Methode
Java:
public T cast(Object obj) {
if (obj != null && !isInstance(obj))
throw new ClassCastException();
return (T) obj;
}

auf die Klasse XYZApp zeigt und nicht auf ABCApp! Was muss ich tun, dass beim Schließen die XYZApp nicht mehr gültig ist?

Danke
 

Marco13

Top Contributor
Hm. Infiefern das mit "jdesktop" zusammenhängt (was ich nicht kenne) und wo die Exception genau herkommt erkennt man daran jetzt nicht. Vielleicht hat da jemand eine Idee.
 

mvitz

Top Contributor
Dabei handelt es sich um das Swing Application Framework (JSR 296) https://appframework.dev.java.net/

Im Endeffekt ist das ganze eine kleiner Wrapper um Swing mit zusätzlichem LifeCycle und einigen vereinfachten Dingen (ActionHandling, Internationalization, ...). Evtl. hängt der Fehler in der Tat mit dem Framework zusammen, das ganze ist allerdings meiner Meinung nach auch noch nicht wirklich ausgereift (zumindest hatte ich auch massig Probleme damit, als ich es mir vor ca. 1 Jahr angeguckt hatte).

Evtl. sollte der TO mal ein Komplett Kompilierbares Beispiel Programm zusammenstellen, dann würde ich mir das mal anschauen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Zwei JPanel übereianderlegen AWT, Swing, JavaFX & SWT 14
tommybalbor JavaFx Anwendung klappt nicht für macOs Nutzern, wenn ich zwei dependecies bei maven hinzufüge AWT, Swing, JavaFX & SWT 6
raeuchertofu Input bei zwei jTextfields AWT, Swing, JavaFX & SWT 5
D Layout einer scene mit ListView Elementen und Zwei Textfeldern AWT, Swing, JavaFX & SWT 1
U Zwei Fragen zu eienr Swing Aufgabe AWT, Swing, JavaFX & SWT 2
G 2D-Grafik Grafik in zwei verschiedenen Fenstern gleichzeitig zeichnen AWT, Swing, JavaFX & SWT 9
I JTable, DefaultTableModel, zwei Zahlen multiplizieren. AWT, Swing, JavaFX & SWT 26
P Zwei JTables auf eine A4-Seite mit einstellbaren Rändern AWT, Swing, JavaFX & SWT 9
missy72 JavaFX TableView / TableColumn / ObservableList / zwei Werte in einer Zelle AWT, Swing, JavaFX & SWT 2
Z Swing Kann man denn abstand zwischen zwei Buttons berechnen AWT, Swing, JavaFX & SWT 5
M Kommunikation zwischen zwei Stages AWT, Swing, JavaFX & SWT 0
Bluedaishi JavaFX Programm start mit zwei scenen bzw Fenster AWT, Swing, JavaFX & SWT 1
N Wie kann ich zwei Grafiken in einer Oberfläche anzeigen lassen? AWT, Swing, JavaFX & SWT 8
L Wörter zwischen zwei Grenzen einlesen. AWT, Swing, JavaFX & SWT 13
T Java: Zwei abhängige JSlider machen nicht das, was sie sollen AWT, Swing, JavaFX & SWT 4
D Zwei getrennte Java Klassen verbinden. Wie ? AWT, Swing, JavaFX & SWT 2
M Zwei JPanel übereinander nur vorderes "repainten" AWT, Swing, JavaFX & SWT 3
D zwei JLabel stapeln in einem JPanel AWT, Swing, JavaFX & SWT 5
H Kombination von zwei Frames AWT, Swing, JavaFX & SWT 16
M Schnittpunkte zwischen zwei Graphics2D Elemente ermitteln. AWT, Swing, JavaFX & SWT 5
DaCrazyJavaExpert Swing Zwei gleichgroße Panels in einem Scrollpane mit Layout AWT, Swing, JavaFX & SWT 9
A Swing Programm funktioniert aber zwei Buttons werden angezeigt AWT, Swing, JavaFX & SWT 3
D Swing Kommunikation zwischen zwei GUI's AWT, Swing, JavaFX & SWT 2
S Zwei JTree, ein Model, bei Selection im ersten JTree soll der zweite die Inhlate anzeigen AWT, Swing, JavaFX & SWT 2
H zwei gleich große Panels getrennt durch ein weiteres Panel AWT, Swing, JavaFX & SWT 10
T CSS Rechtsbüdniges Label mit Zwei Zeilen AWT, Swing, JavaFX & SWT 7
P 2D-Grafik Bogen(Arc) zwischen zwei Punkten zeichnen AWT, Swing, JavaFX & SWT 2
A Oberfläche mit zwei Klassen und actionlistener verbinden AWT, Swing, JavaFX & SWT 7
Paul15 Zwei Fenster AWT, Swing, JavaFX & SWT 23
V JavaFX Zwei Dinge in einer CellFactory erledigen AWT, Swing, JavaFX & SWT 8
B Vertikale Größenänderung zwischen zwei Widgets AWT, Swing, JavaFX & SWT 2
J zwei Paint methoden in einer Klasse AWT, Swing, JavaFX & SWT 3
C Zwei Ebenen in Graphics ? AWT, Swing, JavaFX & SWT 0
L Zwei String Array in eine Spalte einfügen AWT, Swing, JavaFX & SWT 1
I Zwei Fenster nebeneinander anzeigen AWT, Swing, JavaFX & SWT 2
A Swing Zwei Klassen mit Textfeld Eingaben vergleichen und Ausgabe erzeugen AWT, Swing, JavaFX & SWT 10
B Swing focusGained öffnet sich zwei mal AWT, Swing, JavaFX & SWT 3
C Bei Btn Klick zwei JPanels switchen AWT, Swing, JavaFX & SWT 14
A Swing zwei JComboBoxen miteinander vergleichen und anschließend Button umwandeln AWT, Swing, JavaFX & SWT 7
A Jtabbed ein Reiter mit zwei icons AWT, Swing, JavaFX & SWT 4
K Zugriff auf Label und Ereignisbehandlung durch zwei Handlerklassen AWT, Swing, JavaFX & SWT 3
J Zwei GUIs - Nach button-Klick soll ein Wert an die andere GUI übergeben werden AWT, Swing, JavaFX & SWT 15
B Kommunikation zwischen zwei Fenstern und vorübergehende Speicherung der Eingaben AWT, Swing, JavaFX & SWT 4
M Swing Warum öffnen sich beim Zeichnen mit Swing plötzlich zwei Fenster? AWT, Swing, JavaFX & SWT 5
B JApplet zwei Panels autobreite? AWT, Swing, JavaFX & SWT 2
T LayoutManager GridBagLayout - zwei jTable mit unterschiedlicher Höhe AWT, Swing, JavaFX & SWT 2
L Zeichnen in zwei Fenstern AWT, Swing, JavaFX & SWT 8
J JOptionPane mit zwei Buttons?! AWT, Swing, JavaFX & SWT 3
F Swing Ladebildschirm zwischen zwei SWING Frames AWT, Swing, JavaFX & SWT 11
T JTabbedPane - neuen Tab zwischen zwei anderen Tabs hinzufügen AWT, Swing, JavaFX & SWT 2
Helgon Zwei jTables gleich Breit AWT, Swing, JavaFX & SWT 4
C Zwei Bilder übereinander legen AWT, Swing, JavaFX & SWT 1
A Daten umherschieben zwischen zwei Klassen AWT, Swing, JavaFX & SWT 40
M Swing Zwei Jlists - selectedElement binden? AWT, Swing, JavaFX & SWT 7
K zwei TableModel AWT, Swing, JavaFX & SWT 9
J Schließen über x soll zwei Prozesse beenden AWT, Swing, JavaFX & SWT 7
F JPanel mit zwei Methoden her beschreiben. AWT, Swing, JavaFX & SWT 8
Y xormode bzw bild in zwei ebenen zeichnen AWT, Swing, JavaFX & SWT 4
G ein JTextArea in zwei JPanels AWT, Swing, JavaFX & SWT 2
G Wie erzeugt man zwei identische JPanel AWT, Swing, JavaFX & SWT 4
C zwei Bilder nacheinander anzeigen AWT, Swing, JavaFX & SWT 2
B LayoutManager Positionierung zwischen zwei Layoutkomponenten AWT, Swing, JavaFX & SWT 2
N Swing DnD zwischen zwei JTrees AWT, Swing, JavaFX & SWT 2
H Swing Zwei Fragen AWT, Swing, JavaFX & SWT 5
D Zwei String Attribute über eine Methode als Zeilen in einer Tabelle darstellen AWT, Swing, JavaFX & SWT 9
C Zwei JSpinner mit dem gleichen Wert AWT, Swing, JavaFX & SWT 2
T Zwei Jtables eine JscrollPane AWT, Swing, JavaFX & SWT 3
M SWT DND zwischen zwei TreViewern in beide Richtungen AWT, Swing, JavaFX & SWT 10
S SWT Zwei Tabellen gleichzeitig Scrollen AWT, Swing, JavaFX & SWT 3
N zwei JComponente gleichzeitig auf JPanel hinzufügen AWT, Swing, JavaFX & SWT 22
N Ein Button für zwei Aktionen AWT, Swing, JavaFX & SWT 7
V Swing Auslösen von zwei Events hintereinander AWT, Swing, JavaFX & SWT 4
hdi SWT Zwei mal Shell öffnen = Exception AWT, Swing, JavaFX & SWT 6
algorismi Unterscheiden zwischen zwei JLists AWT, Swing, JavaFX & SWT 5
P GridBagLayout - zwei Spalten mit gleicher Größe AWT, Swing, JavaFX & SWT 11
H Ein Button - zwei Actions AWT, Swing, JavaFX & SWT 3
T Schieberegler mit zwei Schiebern AWT, Swing, JavaFX & SWT 2
M SWT SWT - Zwei Tabellen gleicher Größe AWT, Swing, JavaFX & SWT 5
S import von Klassen (zwei Panels eine Form) AWT, Swing, JavaFX & SWT 39
K Zwei Panels zentriert anordnen AWT, Swing, JavaFX & SWT 3
S Vereinen von zwei MenuBar AWT, Swing, JavaFX & SWT 3
P JList mit zwei Werten AWT, Swing, JavaFX & SWT 9
0 JMenuItem nicht in zwei JMenus möglich? AWT, Swing, JavaFX & SWT 2
G Variblenwert zwischen zwei Klassen übergeben AWT, Swing, JavaFX & SWT 3
B zwei JLabels überlappen lassen AWT, Swing, JavaFX & SWT 5
T Kommunikation zwischen Zwei GUI-Klassen AWT, Swing, JavaFX & SWT 2
O Zwei Listener auf Komponente, warten auf Beendigun? AWT, Swing, JavaFX & SWT 2
T Kommunikation zwischen zwei jFrames AWT, Swing, JavaFX & SWT 4
G Datenaustausch zwischen zwei JFrames AWT, Swing, JavaFX & SWT 3
K Zwei JFrames aneinanderdocken? AWT, Swing, JavaFX & SWT 5
A Eins von zwei offnen Fenster/Frames schließen AWT, Swing, JavaFX & SWT 2
S JTable zwei Text-Zeilen in einer Zelle AWT, Swing, JavaFX & SWT 2
hdi zeitgleiches fokusieren von zwei panels AWT, Swing, JavaFX & SWT 2
I JTable: "GLEICHZEITIG" zwei verschiedene TableMode AWT, Swing, JavaFX & SWT 2
R JDialog dispose() wird zwei mal aufgerufen AWT, Swing, JavaFX & SWT 2
T zwei panel und ein thread AWT, Swing, JavaFX & SWT 5
W Instanz eines Steuerelementes an zwei Stellen zeichnen AWT, Swing, JavaFX & SWT 3
M Zwei JMenuBars AWT, Swing, JavaFX & SWT 5
W JTree - aus zwei mach eins AWT, Swing, JavaFX & SWT 2
M Zwei Element auf ein Contentpane AWT, Swing, JavaFX & SWT 45

Ähnliche Java Themen

Neue Themen


Oben