Avatar billede sorensen_dk Nybegynder
26. oktober 2004 - 15:45 Der er 21 kommentarer og
1 løsning

problemer med Mysql driver ved applet

Hej, jeg har lavet en applet som forbinder til en Mysql database. Den virker i eclipse og nu vil jeg gerne uploade den til min server(localhost og samme server som mysql).

jeg har dog det problem at når jeg prøver at tilgå databasen fra appletten(ligger nu på serveren) får jeg denne exception: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

jeg har bare importeret driveren som import java.sql.* og driveren ligger i samme mappe som .class filen.

hvad gør jeg forkert? hvordan får jeg appletten til at finde mysql uden for eclipse?

jeg forbinder til databasen således:

            Class.forName("com.mysql.jdbc.Driver").newInstance();
            con =
                DriverManager.getConnection(
                    "jdbc:mysql://localhost/hund",
                    "root",
                    "");

            opdater = con.createStatement();

            opdater.execute(sql);

men det virker som sagt tidlige i eclipse... det er det jeg ikke forstår.
Avatar billede arne_v Ekspert
26. oktober 2004 - 15:51 #1
Det er faktisk ikke helt trivielt.

1) du putter din oversatte applet kode i en jar fil
2) du retter HTML APPLET tag så den henter jar filen
3) du putter et Class-Path direktiv i manifestet på din jar fil med
  navnet på MySQL JDBC driver jar filen
4) MySQL JDBC driver jar filen placeres på web serveren i samme
  directory som din egen jar fil
Avatar billede arne_v Ekspert
26. oktober 2004 - 15:53 #2
Du er opmærksom på at:

* applets kan downloades og decompiles så database password kan ses

* applets kun kan connecte til samme server som de er hentet fra
  d.v.s. at web og database server skal være samme box

* applet køres på client og derfor skal localhost rettes og
  MySQL security skal ændres så der kan connectes fra andre maskiner
Avatar billede sorensen_dk Nybegynder
26. oktober 2004 - 21:04 #3
hmm... hvordan opretter jeg den manifest fil? og hvad skal der stå i den? jeg plejer at compile i eclipse og den laver den for mig
Avatar billede arne_v Ekspert
26. oktober 2004 - 21:05 #4
Du kan godt få eclise til at lave en jar fil med et manifest
Avatar billede arne_v Ekspert
26. oktober 2004 - 21:11 #6
Eclipse:

export
jar file
følg wizard
Avatar billede sorensen_dk Nybegynder
26. oktober 2004 - 21:26 #7
jeg kan ikke rigtig få den wizard til at virke.. den ender med det sidste billede hvor jeg normalt kan trykke finish, men den er grå fordi den ikke kan finde en main metode, hvilket er klart da jeg starter appletten med init()
Avatar billede sorensen_dk Nybegynder
26. oktober 2004 - 21:27 #8
det skal siges at det er version 2.4 af eclipse da jeg synes at 3.0 er umådelig sløv i optrækket, kan det have noget med dette at gøre? jeg har ellers ikke haft problemer med 2.4 før
Avatar billede arne_v Ekspert
26. oktober 2004 - 21:42 #9
Jeg testede ganske vist med 3.0 men jeg er ret sikker på at 2.4 også kan
lave en jar med en applet.

Men hvis det driller så lav den manuelt ved kommando prompten.
Avatar billede sorensen_dk Nybegynder
26. oktober 2004 - 22:28 #10
jeg får denne fejl:

load: class applet.jar not found.
java.lang.ClassNotFoundException: applet.jar
    at sun.applet.AppletClassLoader.findClass(AppletClassLoader.java:162)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
    at sun.applet.AppletClassLoader.loadClass(AppletClassLoader.java:123)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
    at sun.applet.AppletClassLoader.loadCode(AppletClassLoader.java:566)
    at sun.applet.AppletPanel.createApplet(AppletPanel.java:617)
    at sun.plugin.AppletViewer.createApplet(AppletViewer.java:1946)
    at sun.applet.AppletPanel.runLoader(AppletPanel.java:546)
    at sun.applet.AppletPanel.run(AppletPanel.java:298)
    at java.lang.Thread.run(Thread.java:552)
Caused by: java.io.FileNotFoundException: /Users/michael/Sites/applet/applet/jar.class (No such file or directory)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(FileInputStream.java:106)
    at java.io.FileInputStream.<init>(FileInputStream.java:66)
    at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:69)
    at sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:156)
    at sun.applet.AppletClassLoader.getBytes(AppletClassLoader.java:274)
    at sun.applet.AppletClassLoader.access$100(AppletClassLoader.java:43)
    at sun.applet.AppletClassLoader$1.run(AppletClassLoader.java:152)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.applet.AppletClassLoader.findClass(AppletClassLoader.java:149)
    ... 9 more


html koden ser sådan ud:
<html>
<body>
<applet code=applet.jar width="800" height="600" >
</applet>
</body>
</html>

og manifest filen ser sådan ud:
Manifest-Version: 1.0

Main-Class: HovedMenu

Class-Path: mysql-connector-java-3.0.15-ga-bin.jar


MySql driveren ligger i samme bibliotek som min jar fil(applet.jar).
Avatar billede sorensen_dk Nybegynder
26. oktober 2004 - 22:30 #11
jar filen inkluderer alle .class filer fra appletten samt manifest.mf som ligger i /META-INF
Avatar billede arne_v Ekspert
26. oktober 2004 - 22:33 #12
<applet code="HovedMenu.class" archive="applet.jar" width="800" height="600" >
Avatar billede arne_v Ekspert
26. oktober 2004 - 22:34 #13
Og du behøver ikke Main-Class for en applet
Avatar billede sorensen_dk Nybegynder
26. oktober 2004 - 22:42 #14
hmm.. nu vil appletten godt starte op men jeg får den oprindelige fejl igen: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
Avatar billede arne_v Ekspert
26. oktober 2004 - 22:44 #15
Og der er ikke nogle blanke linier ovenover Class-Path og et linieskift efter ?
Avatar billede sorensen_dk Nybegynder
26. oktober 2004 - 22:50 #16
jo, jeg har rettet det til:
Manifest-Version: 1.0
Class-Path: mysql-connector-java-3.0.15-ga-bin.jar

men får stadig samme fejl
Avatar billede arne_v Ekspert
26. oktober 2004 - 22:53 #17
Og der er linie skift efter ...-bin.jar ?
Avatar billede arne_v Ekspert
26. oktober 2004 - 22:54 #18
Og protection på mysql jar filen er OK så serveren kan læse den ?
Avatar billede sorensen_dk Nybegynder
26. oktober 2004 - 22:58 #19
der er ikke linieskift efter ...-bin.jar jeg ved ikke om protection? det hele ligger på min mac som kører MySql og apache, men jeg har testet både over http://localhost og prøvet at køre html filen direkte fra biblioteket med det samme resultat
Avatar billede arne_v Ekspert
26. oktober 2004 - 23:03 #20
Der skal være et linieskift efter linien !!
Avatar billede sorensen_dk Nybegynder
26. oktober 2004 - 23:07 #21
det holdt hårdt, men nu virker det... Mange tak :)
Avatar billede arne_v Ekspert
26. oktober 2004 - 23:09 #22
så ligger jeg et svar
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