Avatar billede haolan Nybegynder
28. juli 2008 - 20:49 Der er 21 kommentarer og
1 løsning

Forbindelse mellem Java og MySQL

Hej alle

Jeg sidder og roder i at få MySQL og Java til at spille sammen.
Jeg bruger Ubuntu 8.04 og Java 6 og den nyeste XAMPP med MySQL 5.0.51

Når jeg skriver echo $CLASSPATH skriver den:
.:/usr/share/java/mysql.jar

min kode ser sådan ud:

package mysqlconnectiontest;

import java.sql.*;
import java.util.Properties;

public class Main {

      private static final String dbClassName = "com.mysql.jdbc.Driver";

  private static final String CONNECTION =
                          "jdbc:mysql://127.0.0.1/test";
   
    public static void main(String[] args) throws
                            ClassNotFoundException,SQLException
{
        System.out.println(dbClassName);
        // Class.forName(xxx) loads the jdbc classes and
        // creates a drivermanager class factory
        Class.forName(dbClassName);

        // Properties for user and password. Here the user and password are both 'paulr'
        Properties p = new Properties();
        p.put("user","root");
        p.put("password","");

        // Now try to connect
        Connection c = DriverManager.getConnection(CONNECTION,p);

        System.out.println("It works !");
        c.close();
    }
}


og jeg får alligevel følgene fejl:

Exception in thread "main" java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
        at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:169)
        at mysqlconnectiontest.Main.main(Main.java:36)
Java Result: 1
Avatar billede haolan Nybegynder
28. juli 2008 - 20:49 #1
hvad gør jeg galt?
Avatar billede arne_v Ekspert
28. juli 2008 - 21:00 #2
Den kan ikke finde driver klassens d.v.s. at den ikke kan finde jar filen.

1)  check om den jar fil faktisk ligger der

ls -l /usr/share/java/mysql.jar

2)

koer med eksplicit classpath d.v.s.:

java -cp .:/usr/share/java/mysql.jar mysqlconnectiontest.Main

(og koerer du inde fra en IDE saa skal du tilfoeje jar filen til din classpath inde
i IDE'en)
Avatar billede haolan Nybegynder
28. juli 2008 - 21:04 #3
1. min jar fil ligger rigtigt

2. når jeg skriver det der siger den:
Exception in thread "main" java.lang.NoClassDefFoundError: mysqlconnectiontest/Main
Caused by: java.lang.ClassNotFoundException: mysqlconnectiontest.Main
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
    at suException in thread "main" java.lang.NoClassDefFoundError: mysqlconnectiontest/Main
Caused by: java.lang.ClassNotFoundException: mysqlconnectiontest.Main
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:336)n.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:336)

3. Hvad mener du med IDE? Mener du fx NetBeans eller?
Avatar billede arne_v Ekspert
28. juli 2008 - 21:17 #4
Husk at classpath skal matche directory struktur.

Saa hvis du staar i dir med et subdir mysqlconnectiontest
som indeholder Main.java kan du bruge:

java -cp .:/usr/share/java/mysql.jar mysqlconnectiontest.Main

men staar du nede i mysqlconnectiontest dir saa skal du bruge:

java -cp ..:/usr/share/java/mysql.jar mysqlconnectiontest.Main
Avatar billede arne_v Ekspert
28. juli 2008 - 21:18 #5
Ja. NetBeans eller Eclipse eller en tredie.
Avatar billede haolan Nybegynder
28. juli 2008 - 21:35 #6
kan ikke rigtigt få det der java -cp til at virke..

mit projekt ligger på /home/hoa/NetBeansProjects/MySQLConnectiontest hvor henne skal jeg så gå ind for at skrive den der adresse?
Avatar billede arne_v Ekspert
28. juli 2008 - 22:18 #7
Staa i /home/hoa/NetBeansProjects

Omdoeb MySQLConnectiontest til mysqlconnectiontest saa det matcher package

java -cp .:/usr/share/java/mysql.jar mysqlconnectiontest.Main
Avatar billede arne_v Ekspert
28. juli 2008 - 22:19 #8
Forudsaetter at du har compilet successfuldt !
Avatar billede haolan Nybegynder
28. juli 2008 - 22:27 #9
får stadig fejl:

hoa@hoa-laptop:~/NetBeansProjects$ java -cp .:/usr/share/java/mysql.jar mysqlconnectiontest.Main
Exception in thread "main" java.lang.NoClassDefFoundError: mysqlconnectiontest/Main
Caused by: java.lang.ClassNotFoundException: mysqlconnectiontest.Main
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:336
Avatar billede arne_v Ekspert
28. juli 2008 - 22:45 #10
og

ls -l mysqlconnectiontest

viser baade Main.java og Main.class ?
Avatar billede haolan Nybegynder
28. juli 2008 - 22:47 #11
hmm nej.. ingen af dem faktisk :S
Avatar billede haolan Nybegynder
28. juli 2008 - 22:53 #12
den viser:

hoa@hoa-laptop:~/NetBeansProjects$ ls -l mysqlconnectiontest
total 24
drwxr-xr-x 3 hoa hoa 4096 2008-07-28 18:58 build
-rw-r--r-- 1 hoa hoa 3331 2008-07-28 18:55 build.xml
-rw-r--r-- 1 hoa hoa  82 2008-07-28 18:55 manifest.mf
drwxr-xr-x 3 hoa hoa 4096 2008-07-28 18:55 nbproject
drwxr-xr-x 3 hoa hoa 4096 2008-07-28 18:55 src
drwxr-xr-x 2 hoa hoa 4096 2008-07-28 18:55 test
Avatar billede arne_v Ekspert
28. juli 2008 - 23:06 #13
ahhhhhhhhh

proev:

java -cp mysqlconnectiontest/build:/usr/share/java/mysql.jar mysqlconnectiontest.Main
Avatar billede arne_v Ekspert
28. juli 2008 - 23:06 #14
(det var ioevrigt ikke noedvendigt at rename det dir, saa ...)
Avatar billede haolan Nybegynder
28. juli 2008 - 23:16 #15
hmm underligt.. den melder stadig fejl når jeg skriver det der java -cp... Men nu skriver den

init:
deps-jar:
compile:
run:
com.mysql.jdbc.Driver
It works !
BUILD SUCCESSFUL (total time: 0 seco

når jeg builder
Avatar billede arne_v Ekspert
29. juli 2008 - 04:02 #16
Det betyder at det virke inde i NetBeans !

:-)
Avatar billede arne_v Ekspert
29. juli 2008 - 04:03 #17
Med:

java -cp mysqlconnectiontest/build:/usr/share/java/mysql.jar mysqlconnectiontest.Main

så burde det virke hvis:

ls -l mysqlconnectiontest/src/mysqlconnectiontest

viser Main.java

og:

ls -l mysqlconnectiontest/build/mysqlconnectiontest

viser Main.class
Avatar billede haolan Nybegynder
29. juli 2008 - 20:24 #18
hvis jeg skriver: ls -l mysqlconnectiontest/src/mysqlconnectiontest  viser den fint nok Main.java..

Men skriver jeg ls -l mysqlconnectiontest/build/mysqlconnectiontest skriver den: ls: cannot access mysqlconnectiontest/build/mysqlconnectiontest: No such file or directory

det eneste der ligger i build mappen er en undermappe der hedder classes.

Er det fordi jeg ikke har buildet rigtigt eller?

Er rimelig ny i Java og Netbeans, så kan nemt have gjort noget forkert..
Avatar billede haolan Nybegynder
29. juli 2008 - 20:25 #19
under classes ligger mysqlconnectiontest og derinde ligger Main.class
Avatar billede haolan Nybegynder
29. juli 2008 - 20:28 #20
rettede det til at være:
java -cp mysqlconnectiontest/build/classes:/usr/share/java/mysql.jar mysqlconnectiontest.Mai

så virkede det :)
Avatar billede haolan Nybegynder
29. juli 2008 - 20:28 #21
takker mange gange for hjælpen.. Smid svar for points..
Avatar billede arne_v Ekspert
29. juli 2008 - 20:32 #22
super at det virke

og et svar far mig
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

IT-JOB