Avatar billede baitianlong Nybegynder
17. juni 2005 - 22:15 Der er 14 kommentarer og
1 løsning

applet - database problemer

Ja, cirka et par gange om året kaster jeg mig jo ud i appletter og har altid problemer.

Nå, men nu har jeg en applet, der skal hente fra en mysql database (ikke localhost idiotien, bare rolig, den har en URL). I applet vieweren i eclipse virker det fint. Når jeg smider den ind i et html dokument, virker det ikke. Jeg bruger denne åbenlyse html-kode:

<applet code="Ip.class" width="250" height="150">
</applet>

Og appletten kommer fint, men uden database data. Jeg regner med det er fordi den skal bruge klassen DBKontakt også, og ikke finder den.

Hvad gør jeg ?
Avatar billede baitianlong Nybegynder
17. juni 2005 - 22:21 #1
Nu har jeg prøvet at pakke en Jar fil med de to klasser og bruge denne html:

<applet archive="ipcountry.jar" code="Ip.class" width="250" height="150">
</applet>

Det virker dog desværre lige så dårligt
Avatar billede arne_v Ekspert
17. juni 2005 - 22:25 #2
jar fil er den rigtige vej !

Ip.class og DBKontakt.class ligger begge i ipcountry.jar ?

Hvilken fejl kan du se i Java console ?
Avatar billede baitianlong Nybegynder
17. juni 2005 - 22:27 #3
ava.lang.ClassNotFoundException: com.mysql.jdbc.Driver
    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 DBKontakt.<init>(DBKontakt.java:8)
    at Ip.init(Ip.java:26)
    at sun.applet.AppletPanel.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.io.FileNotFoundException: E:\Java\Ip Applet\com\mysql\jdbc\Driver.class (The system cannot find the path specified)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(Unknown Source)
    at java.io.FileInputStream.<init>(Unknown Source)
    at sun.net.www.protocol.file.FileURLConnection.connect(Unknown Source)
    at sun.net.www.protocol.file.FileURLConnection.getInputStream(Unknown Source)
    at sun.applet.AppletClassLoader.getBytes(Unknown Source)
    at sun.applet.AppletClassLoader.access$100(Unknown Source)
    at sun.applet.AppletClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    ... 11 more
Avatar billede baitianlong Nybegynder
17. juni 2005 - 22:29 #4
Der er begge klasser + meta-inf i jar filen :)
Avatar billede arne_v Ekspert
17. juni 2005 - 22:29 #5
din jar fil skal have et manifest som har et Class-Path direktiv
med navnet på MySQL JDBC driver jar filen

og  MySQL JDBC driver jar filen skal så ligge i samme dir som din jar fil
Avatar billede arne_v Ekspert
17. juni 2005 - 22:33 #6
manifest.txt med en linie (husk linieskift efter linien):

Class-Path: mysql-connector-java-3.1.7-bin.jar

hvor jar filen så laves med:

jar cvfm ipcountry.jar manifest.txt Ip.class DBKontakt.class
Avatar billede baitianlong Nybegynder
17. juni 2005 - 22:47 #7
Jeg har ikke alt det classpath environment variables sat op osv. Gider du pakke det for mig, hvis jeg e-mailer dig de to class filer? :)
Avatar billede arne_v Ekspert
17. juni 2005 - 22:59 #8
det kan jeg da godt

men du behøver sådan set ikke noget sat op

\dir-med-java\bin\jar cvfm ipcountry.jar manifest.txt Ip.class DBKontakt.class

i det dir hvor de 3 input filer ligger er nok
Avatar billede baitianlong Nybegynder
17. juni 2005 - 23:08 #9
skriv lige e-mail adressen, eller send den til j at legende dot dk :) PFT
Avatar billede arne_v Ekspert
17. juni 2005 - 23:10 #10
arne_v@mail.danbbs.dk
Avatar billede baitianlong Nybegynder
17. juni 2005 - 23:50 #11
Tak, men nu er det desværre:

java.sql.SQLException: Unable to connect to any hosts due to exception: java.security.AccessControlException: access denied (java.net.SocketPermission mysql1.unoeuro.com resolve)
    at com.mysql.jdbc.Connection.createNewIO(Connection.java:1690)
    at com.mysql.jdbc.Connection.<init>(Connection.java:427)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:395)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at DBKontakt.<init>(DBKontakt.java:9)
    at Ip.init(Ip.java:26)
    at sun.applet.AppletPanel.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Avatar billede arne_v Ekspert
18. juni 2005 - 00:05 #12
husk at med default applet security så kan en applet kun connecte til samme host
som den er hentet fra d.v.s. at applet---database kun virker hvis web serveren
og database serveren er samme box
Avatar billede arne_v Ekspert
18. juni 2005 - 00:06 #13
man anbefaler normalt:

applet-------PHP/ASP/JSP/ASP.NET/CGI script--------database

af samme årsag plus af sikkerheds årsager
Avatar billede baitianlong Nybegynder
23. juni 2005 - 18:16 #14
Det blev en servlet i stedet for. Den kører fino :)

Mange tak for hjælpen endnu en gang. Appletter er vist ikke lige mig...

Svar venligst.
Avatar billede arne_v Ekspert
23. juni 2005 - 18:31 #15
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester