Java - Mehrere Klassen im Applet verwenden

[SoD]r4z0r

Enthusiast
Thread Starter
Mitglied seit
11.04.2009
Beiträge
3.950
Tach zusammen,
hab mit meinem Applet für SQL-DB Zugriff per GUI ein Problem.
Wenn ich in dem Applet im Browser den Button jbtAusfuehren klicke, hängt sich Java oder nur das Applet auf.
In Eclipse funktioniert das Programm jedoch problemlos. Hab das Problem in FF, IE, Chrome. Mehr Browser hab ich nicht getestet.

Code des Applets:
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

/**
  *
  * Beschreibung
  *
  * @version 1.0 vom 01.03.2012
  * @author
  */


public class demo extends JApplet {
  // Anfang Attribute
  private JLabel jlbDemo = new JLabel();
  private JLabel jlbErgebnis = new JLabel();
  private JTextField jtfErgebnis = new JTextField();
  private JButton jbtAusfuehren = new JButton();
  

  // Ende Attribute

  public void init() {
    Container cp = getContentPane();
    cp.setLayout(null);
    cp.setBounds(0, 0, 571, 454);
    // Anfang Komponenten

    jlbDemo.setBounds(16, 16, 110, 25);
    jlbDemo.setText("Demo");
    jlbDemo.setFont(new Font("Dialog", Font.BOLD, 18));
    cp.add(jlbDemo);
    jlbErgebnis.setBounds(16, 96, 110, 20);
    jlbErgebnis.setText("Ergebnis:");
    cp.add(jlbErgebnis);
    jtfErgebnis.setBounds(136, 96, 150, 20);
    cp.add(jtfErgebnis);
    jbtAusfuehren.setBounds(208, 128, 75, 25);
    jbtAusfuehren.setText("Ausführen");
    jbtAusfuehren.setMargin(new Insets(2, 2, 2, 2));
    jbtAusfuehren.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent evt) { 
        jbtAusfuehren_ActionPerformed(evt);
      }
    });
    cp.add(jbtAusfuehren);
    // Ende Komponenten

  } // end of init

  // Anfang Methoden
  public void jbtAusfuehren_ActionPerformed(ActionEvent evt) {
      try {
          connect_Bank.verbinden();
          Statement stmnt = connect_Bank.getCon().createStatement();
          String query = "SELECT name FROM a_kunde WHERE kunr = 1";
          ResultSet rs = stmnt.executeQuery(query);
          if (rs.next() == true) {
              jtfErgebnis.setText(rs.getString("name"));
          }
          stmnt.close();
      } catch (Exception e) {
          e.getStackTrace();
      }
    // TODO hier Quelltext einfügen
  } // end of jbtAusfuehren_ActionPerformed

  // Ende Methoden

} // end of class demo

Die Klasse connect_Bank sieht wie folgt aus:
Code:
import java.sql.Connection;
import java.sql.DriverManager;

public class connect_Bank {

    public static Connection con;

    public static void verbinden() throws Exception {
        String userSchool = "bbth9bfr";
        String passwortSchool = "*******";
        String urlSchool = "jdbc:oracle:thin:@dbserver2:1521:ora10";
        Class.forName("oracle.jdbc.driver.OracleDriver");
         con = DriverManager.getConnection(urlSchool,userSchool, passwortSchool);
    }
    
    public static void trennen() throws Exception {
        con.close();
    }

    public static Connection getCon() {
        return con;
    }

    public static void setCon(Connection con) {
        connect_Bank.con = con;
    }

}

Und das Applet rufe ich wie folgt in der Datei demo.html auf:
Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>demo-Applet</title>
<meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1">
</head>
<body>
<h1>demo-Applet</h1>
<hr>
<applet code="demo.class"  width="571" height="454">
</applet>
<hr>
</body>
</html>

Die demo.html liegt im Workbench/Projekt/bin , wo auch die demo.class und die connect_Bank.class liegt.
Ich vermute, dass das Applet im Browser keinen Zugriff mehr auf die connect_Bank.class hat.
Jedoch weiß ich nicht, wie ich das Problem beheben kann.

Wie gesagt, in Eclipse (Applet-Viewer) funktioniert alles problemlos.

Hoffe ihr könnt mir bei dem Problem helfen.
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Wird in der Java Console eine Fehlermeldung ausgegeben?

Eventuell musst Du die Konsole erst aktivieren, unter Systemsteuerung -> Programme -> Java -> Erweitert -> Java-Konsole -> anzeigen. Danach den Browser neu starten.
 
Hab ich jetzt ausprobiert, folgendes kam in der Konsole bei raus:
Code:
Java Plug-in 1.6.0_26
Verwendung der JRE-Version 1.6.0_26-b03 Java HotSpot(TM) Client VM
Home-Verzeichnis des Benutzers = C:\Users\bbth9bfr

----------------------------------------------------
c:   Konsole löschen
f:   Objekte in Finalisierungswarteschlange finalisieren
g:   Speicherbereinigung
h:   Diese Hilfemeldung anzeigen
l:   ClassLoader-Liste ausgeben
m:   Speicherbelegung anzeigen
o:   Protokollierung auslösen
q:   Konsole ausblenden
r:   Richtlinien-Konfiguration neu laden
s:   System- und Bereitstellungseigenschaften ausgeben
t:   Threadliste ausgeben
v:   Thread-Stack ausgeben
x:   ClassLoader-Cache löschen
0-5: Trace-Stufe auf <n> setzen
----------------------------------------------------

security: property package.access value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.
security: property package.access new value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.javaws
security: property package.access value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.javaws
security: property package.access new value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.javaws,com.sun.deploy
security: property package.access value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.javaws,com.sun.deploy
security: property package.access new value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.javaws,com.sun.deploy,com.sun.jnlp
security: property package.definition value null
security: property package.definition new value com.sun.javaws
security: property package.definition value com.sun.javaws
security: property package.definition new value com.sun.javaws,com.sun.deploy
security: property package.definition value com.sun.javaws,com.sun.deploy
security: property package.definition new value com.sun.javaws,com.sun.deploy,com.sun.jnlp
security: property package.access value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.javaws,com.sun.deploy,com.sun.jnlp
security: property package.access new value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.javaws,com.sun.deploy,com.sun.jnlp,org.mozilla.jss
security: property package.definition value com.sun.javaws,com.sun.deploy,com.sun.jnlp
security: property package.definition new value com.sun.javaws,com.sun.deploy,com.sun.jnlp,org.mozilla.jss
basic: Fortschritts-Listener hinzugefügt: sun.plugin.util.GrayBoxPainter$GrayBoxProgressListener@a20892
network: Cache-Eintrag nicht gefunden [url: file:/G:/JAV/Workspace/InhouseProjekt/bin/, Version: null]
network: Cache-Eintrag nicht gefunden [url: file:/G:/JAV/Workspace/InhouseProjekt/bin/, Version: null]
basic: Applet geladen
basic: Applet resized and added to parent container
basic: PERF: AppletExecutionRunnable - applet.init() BEGIN ; jvmLaunch dt 159003 us, pluginInit dt 346514 us, TotalTime: 505517 us
basic: Applet initialized
basic: Fortschritts-Listener entfernt: sun.plugin.util.GrayBoxPainter$GrayBoxProgressListener@a20892
basic: Applet made visible
basic: Starting applet
basic: completed perf rollup
basic: Applet started
basic: Told clients applet is started
network: Cache-Eintrag nicht gefunden [url: http://dbserver2/crossdomain.xml, Version: null]
network: Verbindung von http://dbserver2/crossdomain.xml mit Proxy=DIRECT wird hergestellt
network: Verbindung von http://dbserver2:80/ mit Proxy=DIRECT wird hergestellt
network: Cache-Eintrag nicht gefunden [url: http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd, Version: null]
network: Verbindung von http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd mit Proxy=HTTP @ proxy.bg.bib.de/172.16.0.60:8080 wird hergestellt
network: Cache-Eintrag gefunden [url: http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent, Version: null] prevalidated=false/0
network: Cache-Eintrag nicht gefunden [url: http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent, Version: null]
network: Verbindung von http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent mit Proxy=HTTP @ proxy.bg.bib.de/172.16.0.60:8080 wird hergestellt
network: Ressource herunterladen: http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent
    Content-Length: 13.848
    Content-Encoding: null
network: URL http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent in Datei C:\Users\bbth9bfr\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\25\3af377d9-2e5ee87a-temp geschrieben
network: Cache-Eintrag nicht gefunden [url: http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent, Version: null]
network: Verbindung von http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent mit Proxy=HTTP @ proxy.bg.bib.de/172.16.0.60:8080 wird hergestellt
security: Blacklist-Revocation-Check ist aktiviert.
security: Die Überprüfung der Liste vertrauenswürdiger Bibliotheken ist aktiviert
network: CleanupThread used 938678 us
java.security.PrivilegedActionException: java.io.IOException: Server returned HTTP response code: 502 for URL: http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.deploy.net.CrossDomainXML.check(Unknown Source)
    at com.sun.deploy.net.CrossDomainXML.check(Unknown Source)
    at sun.plugin2.applet.Applet2SecurityManager.checkConnect(Unknown Source)
    at java.net.InetAddress.getAllByName0(Unknown Source)
    at java.net.InetAddress.getAllByName(Unknown Source)
    at java.net.InetAddress.getAllByName(Unknown Source)
    at java.net.InetAddress.getByName(Unknown Source)
    at java.net.InetSocketAddress.<init>(Unknown Source)
    at java.net.Socket.<init>(Unknown Source)
    at oracle.net.nt.TcpNTAdapter.connect(Unknown Source)
    at oracle.net.nt.ConnOption.connect(Unknown Source)
    at oracle.net.nt.ConnStrategy.execute(Unknown Source)
    at oracle.net.resolver.AddrResolution.resolveAndExecute(Unknown Source)
    at oracle.net.ns.NSProtocol.establishConnection(Unknown Source)
    at oracle.net.ns.NSProtocol.connect(Unknown Source)
    at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:843)
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:267)
    at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:413)
    at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:164)
    at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:34)
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:752)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at connect_Bank.verbinden(connect_Bank.java:17)
    at demo.jbtAusfuehren_ActionPerformed(demo.java:60)
    at demo$1.actionPerformed(demo.java:49)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$000(Unknown Source)
    at java.awt.EventQueue$1.run(Unknown Source)
    at java.awt.EventQueue$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue$2.run(Unknown Source)
    at java.awt.EventQueue$2.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.io.IOException: Server returned HTTP response code: 502 for URL: http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.startPE(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.skipSeparator(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.scanDecls(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.scanDTDExternalSubset(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.dispatch(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.next(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
    at javax.xml.parsers.SAXParser.parse(Unknown Source)
    at javax.xml.parsers.SAXParser.parse(Unknown Source)
    at com.sun.deploy.net.CrossDomainXML$2.run(Unknown Source)
    ... 62 more

Eben mit meinem Java und SWE Dozenten drüber gesprochen aber beide hatten leider keine Idee, was der Fehler sein könnte...
 
Das sieht danach aus, als ob Dein Applet versucht Ressourcen (Spezieller: .dtd Dateien) vom W3C abzurufen. Musst Du in Deinem Applet html oder xml Dateien parsen? Ich meine man konnte manche Parser anweisen die .dtd aus einem lokalen Cache zu laden.
 
Hmm, gute Frage.
Haben Applets bis jetzt im Unterricht nicht wirklich besprochen, daher weiß ich nicht wirklich wo, wie und was das Applet parsen sollte, könnte oder müsste.

Hab das Applet im JavaEditor (11.5) komplett erstellt, der hat mir auch die entsprechende .html Datei erstellt.
Den Rest (Funktion vom Button) und die connect-Klasse hab ich in Eclipse kompiliert und bearbeitet.
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh