www.mikrocontroller.net

Forum: PC-Programmierung Java Applet, externe Libs


Autor: jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey zusammen, ich hab mir ein Java Applet gebaut, das externe Libs 
verwendet.
In Eclipse funktioniert alles, sobald ich es aber im Browser öffne, 
geht's nicht richtig.
Ich vermute es liegt daran, dass die Datei hsqldb.jar nur in Eclipse 
richtig eingebunden ist, aber nicht im Skript. Kann das sein? Wie umgeht 
man dieses Problem?

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
du must, glaube ich, alles ein ein jar packet (jar ist doch auch bloss 
eine zip datei)

Autor: jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie meinst du das? also ich habe die . class datei und das jar, dass ich 
gerne einbinden möchte.


Wenn ich das ganze als Java Applikation mache, geht es wunderbar, 
dankden Zusatzmodul"Fat".

Nur sobald ich ein Applet mache, funktioniert es nicht mehr, ich denke 
weil die Datei hsqldb.jar nicht eingebunden ist. Kann man die irgendwie 
dem Applet hinzufügen?

ODer für eine Alternative, kann man aus einem Applet eine Aplikation 
starten?

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich glaueb du must das jar auspacken und zusammen mit deiner class datei 
ein neues jar bauen. Zum schluss mit ein jar rauskommen

Autor: jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kannst du das bitte etwas genauer sagen`?

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie genau denn noch?

benenn die jar, in eine zip dabei um. Entpacke die Datei in ein 
verzeichniss. Lege die class dazu und packet das ganze in eine neue Zip 
Datei. Danach noch die Zip wieder in eine jar umbenennen und schon 
sollte es gehen. Ich glaueb die Jar muss dann wie deine Hauptklasse 
heissen.

Autor: jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
welche jar meinst du?
ich habe ja oben 2 lösungswege angesprochen.
der eine war, ich habe das ganze als fertige java applikation in einer 
jar, das ganze läuft auch. also das in die html einbinden wäre schon gut
------
das andre war, ich habe das ganze nochmal in eclipse als java applet, in 
eclipse läuft es auch.
nur wenn ich es aus dem browser starte dann geht es nicht. hier hab ich 
überhaupt keine jar datei vorliegen.
------

soweit die ausgangssituation. jetzt meinst du "pack die jar aus" okay, 
da ich nur von einer jar gesprochen habe, die ihc habe gehe ich von der 
fertigen java aplikation aus.
ok mache ich. die class datei packe ich da rein mit dem ganzen anderen 
zeugs-> neue jar. und jetzt ? wie bekomm ich es im browser zum laufen? 
ich versteh dich nicht genau, leider.

Autor: jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
übrigens, in der jar ist die class standartmäßig schon drin. Warum soll 
ich sie reinkopieren, sie ist 1:1 schon so drin.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
gut dann habe ich es falsch verstanden, wenn du schon ein jar hast wo 
deine class und die klassen der lib drin sein, dann kannst du doch 
einfach die jar beim applett angeben

Autor: jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das Problem ist, es ist eine java applikation. Und die läuft zwar auf 
meinem rechner als ausführbare jar datei, aber lässt sich nicht in den 
brwoser einbinden, weil es kein applet ist.
Das ist mein Problem ...

Autor: jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und wenn ich es als applet umschreibe, dann funktioniert es nur in 
eclipse richtig, aber nicht im browser (weil die liberies nicht mit 
exportiert werden, die datei hsqldb.jar)

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich glaube so kommen wir nicht weiter, kannst du das applett mal 
hochladen?
hsqldb.jar kann ich mir ja selber saugen

Autor: jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke dass du mir helfen willst.
Also in Eclipse habe ich folgenden Code
import java.sql.*;
import java.applet.*; 
 

public class d extends Applet {
   public void init() {
     


    try {
      Class.forName("org.hsqldb.jdbcDriver");
      Connection con = DriverManager.getConnection(
          "jdbc:hsqldb:file:d:/new;shutdown=true", "sa", "");

        Statement statement = con.createStatement();
statement.executeUpdate( "INSERT INTO VERKAEUFER VALUES(44545,'bruunnner','juniorr',200)" ); 
        con.commit();
        con.setAutoCommit(true);
           
        statement.close();
        con.close(); 
    } catch (Exception ex) {
      System.out.println("huhu");
      ex.printStackTrace();
    }
  
}
}

Der klappt auch, d.h. in dem Datenbank Sript ist danch der Eintrag zu 
finden, der hier angelegt wurde.

Wenn ich das ausführe, erzeugt Eclipse in dem Pfad wo die Dateien alle 
so liegen eine HTML Datei, in der das Applet drin ist.
Während der Ausführzeit in Eclipse kopiere ich mir diese MTML Datei 
(nachdem ich das von Eclipse aus gestartete Applet beende, ist die HTML 
wieder weg).
Wenn ich die HTML selber starte, dann wird kein Eintrag erzeugt und ich 
hehalte die Fehlermeldung
java.lang.ClassNotFoundException: org.hsqldb.jdbcDriver
  at sun.applet.AppletClassLoader.findClass(Unknown Source)
  at java.lang.ClassLoader.loadClass(Unknown Source)
  at sun.applet.AppletClassLoader.loadClass(Unknown Source)
  at java.lang.ClassLoader.loadClass(Unknown Source)
  at java.lang.ClassLoader.loadClassInternal(Unknown Source)
  at java.lang.Class.forName0(Native Method)
  at java.lang.Class.forName(Unknown Source)
  at d.init(d.java:11)
  at sun.applet.AppletPanel.run(Unknown Source)
  at java.lang.Thread.run(Unknown Source)

Autor: jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also Eclipse kann das ganze ausführen, aber wenn ich es ausführe durch 
starten der html datei bekomm ich den Fehler.

(Damit das ganze läuft musst du aber noch die Datei hsqldb.jar 
importieren, und zwar aus dem Pfad, wo du den hsqldb eingestellt hast, 
das hab ich durch langes probieren herausgefunden...also wie  man das 
grundsätzlich einrichtet steht auch auf 
http://beuter.dynalias.com/javainsel7/javainsel_22... 
)

Autor: jo (Gast)
Datum:
Angehängte Dateien:
  • Ap.zip (1,07 KB, 20 Downloads)

Bewertung
0 lesenswert
nicht lesenswert
und hier habe ich mal die HTML Datei die eclipse erzeugt hat mit der 
class datei angehängt

Autor: Peter (Gast)
Datum:
Angehängte Dateien:
  • d.jar (690 KB, 151 Downloads)

Bewertung
0 lesenswert
nicht lesenswert
genau wie ich es gesagt hatte.
<p>
  <applet code="d.class" archives="d.jar" width="640" height="200" alt="Java-Applets mit HTML-Farbw&auml;hler">
    <param name="TestText" value="SELFHTML">
  </applet>
</p>

Dann hast du aber gleich das nächste Problem, ein applett darf nciht auf 
die Festplatte zugreifen

Autor: jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
später ist es sowieso ein MySql Datenbankserver, das hier ist nur zum 
testen.
Darf ich mal fragen, was d.jar jetzt ist, wie es erstellt wurde???

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
so wie ich oben geschrieben habe, nichts anderes.

Benenn es in zip um und schon doch selber mal rein.

Aber wenn du seit 2Tage immer noch an den kleinen Problemen hängst, 
solltest du mal darüber nachdenken ob es sinn macht weiter zumachen.

Autor: jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
die class datei ist klar.
aber woher kommt der ordner ORG?

Autor: jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ahhh das ist der von der datei die man einbinden will... okay ich glaub 
ich habs verstanden, dankeschön, echt nett dass du dir die mühe gemacht 
hast..!! :-)

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
aus der hsqldb.jar  wie ich oben geschrieben hatte.

Autor: jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
es kommt aber immer noch der gleiche fehler, class not found

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bei mir nicht.

huhu
java.sql.SQLException: General error: 
java.security.AccessControlException: access denied 
(java.io.FilePermission d:\new.properties read)
  at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
  at org.hsqldb.jdbc.jdbcConnection.<init>(Unknown Source)
  at org.hsqldb.jdbcDriver.getConnection(Unknown Source)
  at org.hsqldb.jdbcDriver.connect(Unknown Source)
  at java.sql.DriverManager.getConnection(Unknown Source)
  at java.sql.DriverManager.getConnection(Unknown Source)
  at d.init(d.java:12)
  at 
sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown 
Source)
  at java.lang.Thread.run(Unknown Source)

Autor: jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja das sieht gut aus ;)
java applets dürfen nicht auf die festplatte schreiben, nur von eclipse 
aus da gehts?

also aber generell:
ich habe deine datei d.jar, deinen html code dazu und die class datei 
aus meinem anhang oben in einem ordner.
das sollte es doch sein, oder? geht nur leider nicht

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nein du brauchst nur die jar datei, mehr nicht.

Also eine html und die jar in einem ordner.

Autor: jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
deine html, deine d.jar in einem ordner:

java.lang.ClassNotFoundException: org.hsqldb.jdbcDriver
  at sun.applet.AppletClassLoader.findClass(Unknown Source)
  at java.lang.ClassLoader.loadClass(Unknown Source)
  at sun.applet.AppletClassLoader.loadClass(Unknown Source)
  at java.lang.ClassLoader.loadClass(Unknown Source)
  at java.lang.ClassLoader.loadClassInternal(Unknown Source)
  at java.lang.Class.forName0(Native Method)
  at java.lang.Class.forName(Unknown Source)
  at d.init(d.java:11)
  at sun.applet.AppletPanel.run(Unknown Source)
  at java.lang.Thread.run(Unknown Source)

Autor: jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und wenn ich die class.d nicht in dem ordner hab, dann meldet er , dass 
er sie nicht finden kann

Autor: jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie geht es denn nun?

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bei mir hat java nicht kompelett die warheit gesagt, es hat etwas aus 
dem Cache genommen.

So geht es bei mir.

lege mal das Verzeichniss Org aus dem jar in das Verzeichniss, dann geht 
es bei mir.

Autor: jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
aber die d.class muss auch noch dazu. hey cool, das klappt jetzt. und 
wenn ich anstatt diesem hsqldb.jar jetzt eine my sql datenbank nehme und 
also my.sql-connector-java.jar reinmache dann klappt das auch mit dem 
schreiben, oder??
wie macht man das hier, weil ich muss 2 jars rein holen, aber ich habe 
ja nur einen org. ordner. kann ich dann einfach einen org ordner 
erstellen und den inhalt von den beiden jars da herein?

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
habe gerade mal etwas rumgesucht, das ist der saubere weg.

<applet code="d.class" archive="d.jar,hsqldb.jar"

in das d.jar machst du dein zeug und mit , dahinter einfach alle jars 
die du noch brauchst.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bedenke aber auch die Sicherheit, wenn du mysql nehmen willst. Wie 
willst du verhindern das jemadn sich ohne dein Applett mit der datenbank 
verbindet? (Das passwort kann man aus dem Applett auslesen!)

Autor: jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also mit dem org ordner klappt bei mir.
allerdings brauche ich dann die datei d.jar garnicht mehr und auch nicht 
im kopf vom tag.


wenn ichs so mache wie in deinem letzten beitrag, dann brauche ich ja 
auch kein d.jar, sehe ich das richtig, weil in hsqldb.jar ist das ja 
schon drin.

ich bin grade dran mit dem my sql und dem org ordner zu machen, das prob 
is hier muss ich 2 jars rein holen und ich schreib dann mal wie es 
gelaufen ist

Autor: jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ach mit 2 "fremden" jars geht das ganze schon wieder nicht, wie ich das 
sehe

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
laut doku sollte es aber gehen.

Autor: jo (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe den Java Quelltext hier im Posting, und das Ergebnis von mir 
als ZIP
import java.sql.*;
import java.applet.*; 
 

public class d extends Applet {
   public void init() {
     


    try {
      Class.forName( "com.mysql.jdbc.Driver" );
      Connection con = DriverManager.getConnection( "jdbc:mysql://url","...","..." );


        Statement statement = con.createStatement();
statement.executeUpdate( "INSERT INTO VERKAEUFER VALUES(44545,'bruunnner','juniorr',200)" ); 
        con.commit();
        con.setAutoCommit(true);
           
        statement.close();
        con.close(); 
    } catch (Exception ex) {
      System.out.println("huhu");
      ex.printStackTrace();
    }
  
}
}

Die Klasse kann nicht gefunden werden

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
geht doch.

<applet code=d.class 
archive="aspectjrt.jar,mysql-connector-java-5.0.8-bin-g.jar" width="200" 
height="200" >

dann braucht du den ordner org gar nicht, und wenn du schon das jar 
entpackst warum dann nicht den com ordner?

Weist du überhaupt von der Bedeutung der Ordner?

java.security.AccessControlException: access denied 
(java.net.SocketPermission url resolve)
  at java.security.AccessControlContext.checkPermission(Unknown Source)
  at java.security.AccessController.checkPermission(Unknown Source)
  at java.lang.SecurityManager.checkPermission(Unknown Source)
  at java.lang.SecurityManager.checkConnect(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 
com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java: 
247)
  at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:271)
  at com.mysql.jdbc.Connection.createNewIO(Connection.java:2771)
  at com.mysql.jdbc.Connection.<init>(Connection.java:1555)
  at 
com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:28 
5)
  at java.sql.DriverManager.getConnection(Unknown Source)
  at java.sql.DriverManager.getConnection(Unknown Source)
  at d.init(d.java:12)
  at 
sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown 
Source)
  at java.lang.Thread.run(Unknown Source)


** END NESTED EXCEPTION **



Last packet sent to the server was 0 ms ago.
  at com.mysql.jdbc.Connection.createNewIO(Connection.java:2847)
  at com.mysql.jdbc.Connection.<init>(Connection.java:1555)
  at 
com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:28 
5)
  at java.sql.DriverManager.getConnection(Unknown Source)
  at java.sql.DriverManager.getConnection(Unknown Source)
  at d.init(d.java:12)
  at 
sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown 
Source)
  at java.lang.Thread.run(Unknown Source)
Thu Feb 12 22:10:37 CET 2009 TRACE:  --> Connection.java:3403 
com.mysql.jdbc.Connection.finalize()
Thu Feb 12 22:10:37 CET 2009 TRACE:   --> Connection.java:2062 
com.mysql.jdbc.Connection.cleanup(null)
Thu Feb 12 22:10:37 CET 2009 TRACE:   <--  Connection.java:2062 
com.mysql.jdbc.Connection.cleanup(..) returning null
Thu Feb 12 22:10:37 CET 2009 TRACE:  <--  Connection.java:3403 
com.mysql.jdbc.Connection.finalize(..) returning null

Autor: jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
puhhhh ich glaub jetzt geht es dann doch, ich bin ja soooooooo froh, 
dass du mir geholfen hast, echt nett. Ich spiel jetzt damit noch was 
rum, ich denke dass es jetzt nun endlich klappt, danke =)

Autor: jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also, in eclipse, 0 problem.
aber jetzt bekomme ich eine unterwartete exception wenn es über das 
applet läuft


** BEGIN NESTED EXCEPTION **

java.security.AccessControlException
MESSAGE: access denied (java.net.SocketPermission sql06.db4free.net 
resolve)

STACKTRACE:

java.security.AccessControlException: access denied 
(java.net.SocketPermission sql06.db4free.net resolve)
  at java.security.AccessControlContext.checkPermission(Unknown Source)
  at java.security.AccessController.checkPermission(Unknown Source)
  at java.lang.SecurityManager.checkPermission(Unknown Source)
  at java.lang.SecurityManager.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 
com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java: 
247)
  at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:271)
  at com.mysql.jdbc.Connection.createNewIO(Connection.java:2771)
  at com.mysql.jdbc.Connection.<init>(Connection.java:1555)
  at 
com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:28 
5)
  at java.sql.DriverManager.getConnection(Unknown Source)
  at java.sql.DriverManager.getConnection(Unknown Source)
  at d.init(d.java:12)
  at sun.applet.AppletPanel.run(Unknown Source)
  at java.lang.Thread.run(Unknown Source)


** END NESTED EXCEPTION **



wenn du / jmd eine idee hat, warum es in eclipse geht aber im applet 
nicht, wäre ich sehr dankbar.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
applet dürfen nur auf den host zugreifen von wo sie geladen wurden sind.

Wenn du also auf sql06.db4free.net zugreiffen willst, must du auch das 
applett auf sql06.db4free.net legen.

Autor: jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
naja, das könnte schwer werden. kennst du zufällig einen anbieter, wo 
man applets hochladen kann, und eine datenbank in mysql hat?

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
naja, jeder Root oder VServer kann das.

Aber ich rate noch mal davon ab, ich weiss ja nicht was es am ende 
werden soll. Aber das login für die mysql kann man aus dem applett 
auslesen. Das nächste Problem sind Firmennetze, hinter einem Proxy geht 
kein applett auch nicht mehr. Weil keine verbindung vom Browser zur DB 
möglich ist.

Autor: jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
naja im moment spiele ich nur etwas damit herum, um mir was rüstzeug zu 
beschaffen. ich hab mich in das thema in den letzten tagen etwas 
eingelesen und wollte jetzt mal einen klick zähler für homepages machen, 
da dachte ich binde ich so ein applet ein.
aber generell wollte ich eigentlich nur etwas darüber lernen indem ich 
einfach was damit rumspiele.

Autor: jo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und nochmal dankeschön!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.