25. august 2003 - 11:07
Der er
71 kommentarer og 1 løsning
problem med placering af mysql driver
Hej Eksperter, Min mysqldriver hedder mm.mysql-2.0.4-bin og ligger i jre/lib/ext i mit java bibliotek. Jeg henviser til den med com.mysql.jdbc.Driver når jeg opretter en DB-forbindelse. Jeg får en classnotfoundexception, så det lader til at driveren ligger forkert, men hvor skal den så ligge?
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
25. august 2003 - 11:24
#1
Sikker på det er den rigtige jvm du så bruger? Hvis du f.eks. har en jdk installeret så vil den typisk ogå installere en jre i c:\programmer\java eller sådan noget... Prøv at se om du måske kan smider driveren der og så virker det?
25. august 2003 - 11:25
#2
det er jeg ret sikker på :-)
25. august 2003 - 11:26
#3
Det er da et forsøg værd???
25. august 2003 - 11:30
#4
jeg er bange for jeg ikke forstår hvad det er jeg skal gøre? Jeg har en tilsvarende app kørende på min linux maskine og der er ikke nogen problemer. Der ligger driveren i jre/lib/ext
25. august 2003 - 11:32
#5
Hvis det er på en windåse... c:\programmer\java14\jre\lib\ext Prøv at ligge den der... Så vidt jeg husker så har man også kun en jre på en linuxbox...
25. august 2003 - 11:33
#6
Det er lige præcis der den ligger
25. august 2003 - 11:34
#7
okay... Hved så med i c:\jdk1.4\jre\lib\ext? Måske det så er den jre den bruger?
25. august 2003 - 11:48
#8
der syntes ikke at være noget som hjælper :-(
25. august 2003 - 11:49
#9
jeg har prøvet at smide driveren begge steder
25. august 2003 - 11:50
#10
Lyder underligt... Der er selvfølgelig altid at smide den i c:\ og så sætte classpath til c:\mm.mysql-2.0.4-bin.jar
25. august 2003 - 11:51
#11
er det den forkerte driver?
25. august 2003 - 11:53
#13
package util; import java.sql.*; public class Databaseforbindelsemysql { private Connection conn ; private Statement stmt; public Databaseforbindelsemysql(String data, String driver) { try { Class.forName(driver); conn = DriverManager.getConnection(data, "", ""); stmt = conn.createStatement(); } catch(Exception s) { System.out.println("SQL dataforbindelse fejlede"+s); } } public ResultSet select(String sql) { ResultSet r = null; try { r = stmt.executeQuery(sql); } catch(SQLException s) { System.out.println("Select fejlede: "+s); } return r; } public void insertUpdate(String sql) { try { stmt.executeUpdate(sql); } catch(SQLException s) { System.out.println("update/insert fejlede"); } } public void close() { try { stmt.close(); } catch(SQLException s) { System.out.println("Close fejlede"); } } }
25. august 2003 - 11:59
#14
Nej driveren er rigtig nok så vidt jeg kan se...
25. august 2003 - 12:00
#15
så fatter jeg virkelig ikke en meter :-(
25. august 2003 - 12:01
#16
Hvis du får en classnotfound så er det driveren hvis det er i den try/catch den går galt...
25. august 2003 - 12:03
#17
det kan jeg jo lige sikre mig at det er :-)
25. august 2003 - 12:05
#18
Det er her det går galt try { Class.forName(driver); conn = DriverManager.getConnection(data, "", ""); stmt = conn.createStatement(); } catch(Exception s) { System.out.println("SQL dataforbindelse fejlede"+s); }
25. august 2003 - 12:07
#19
classnotfoundexception: com.mysql.jdbc.Driver
25. august 2003 - 12:09
#20
Tror jeg har fundet den
jdbc:
mysql://192.168.1.11/DB?user=USER&password=PASS Dur ikke rigtigt så vidt jeg kan se
Den skal hedde
Connection con = DriverManager.getConnection(url,
"myLogin", "myPassword");
Så du skal vel skilde url og use/pass
25. august 2003 - 12:11
#21
nej det er såmend rigtigt nok som det er. Det virker jo fint på min linux maskine
25. august 2003 - 12:13
#22
Rigtigt... Jamen så må det jo være driveren Hvad Windows OS?
25. august 2003 - 12:13
#23
w2k
25. august 2003 - 12:19
#24
Har du prøvet at tilføje mysql driveren til din classpath ? Affyret fra dosprompt: SET CLASSPATH=.;c:\jdk1.4\jre\lib\ext\mm.mysql-2.0.4-bin.jar "mm.mysql-2.0.4-bin.jar" iøvrigt et mærkeligt navn - sikker på du har givet den det navn ??
25. august 2003 - 12:21
#25
det er det den hedder :-)
25. august 2003 - 12:22
#26
Okay - men hjælper det at tilføje den i classpath ?
25. august 2003 - 12:26
#27
nej det hjalp ikke
25. august 2003 - 12:35
#28
CLASSPATH=c:\j2sdk1.4.0_01\jre\lib\ext\mm.mysql-2.0.4-bin.jar
25. august 2003 - 12:37
#29
Du skal bruge SET CLASSPATH=.;c:\j2sdk1.4.0_01\jre\lib\ext\mm.mysql-2.0.4-bin.jar Ellers prøv fra dosprompt Gå til directory hvorfra du kører classen Databaseforbindelsemysql 1. java -cp c:\jdk1.4\jre\lib\ext\mm.mysql-2.0.4-bin.jar CLASSEN_SOM_BRUGER_DB
25. august 2003 - 12:39
#30
Og det skal selvfølgelig være: java -cp c:\j2sdk1.4.0_01\jre\lib\ext\mm.mysql-2.0.4-bin.jar
25. august 2003 - 12:45
#31
jeg får bare en liste over hvad man kan
25. august 2003 - 12:47
#32
java -cp c:\j2sdk1.4.0_01\jre\lib\ext\mm.mysql-2.0.4-bin.jar NAVNET_PÅ_CLASSFIL
25. august 2003 - 12:49
#33
exception i thread
25. august 2003 - 12:49
#34
Nej - kan ikke være rigtigt! Enten denne fra dosprompt og så kør din class fil som normalt SET CLASSPATH=.;c:\j2sdk1.4.0_01\jre\lib\ext\mm.mysql-2.0.4-bin.jar herefter: java WHATEVER eller denne: java -cp c:\jdk1.4\jre\lib\ext\mm.mysql-2.0.4-bin.jar CLASSEN_SOM_BRUGER_DB
25. august 2003 - 12:49
#35
noclassdeffounderror
25. august 2003 - 12:50
#36
har du en vnc client liggende
25. august 2003 - 12:54
#37
Nej - har haft men smed den ud, skulle ikke bruge den alligevel men, bruger du package navne i dine java-filer ?? For så er det jo package1.package2.NAVNET_PÅ_CLASSFIL
25. august 2003 - 12:58
#38
25. august 2003 - 13:01
#39
Hvis det er en jsp eller servlet så skal du smide den i web-apps/lib
25. august 2003 - 13:01
#40
Nu har jeg VNC!
25. august 2003 - 13:02
#41
25. august 2003 - 13:21
#42
Prøv lige olly's forslag 25/08-2003 13:01:14
25. august 2003 - 13:32
#43
det kan jeg heller ikke få til at virke :-(
25. august 2003 - 13:33
#44
Det burde virke men det gør det bare ikke :-(
25. august 2003 - 13:37
#45
Og du genstarter tomcat mår du ændre? Der kan være problemmer der nemlig...
25. august 2003 - 13:42
#46
ja det gør jeg :-)
25. august 2003 - 13:57
#47
Det sidste desperate jeg kan komme på, er fyre nedenstående to linier af fra dosprompten, eller læg dem ind i autoexec.bat og genstart maskinen. 1. SET PATH=%PATH%;c:\j2sdk1.4.0_01\BIN; 2. SET CLASSPATH=.;c:\j2sdk1.4.0_01\LIB;c:\j2sdk1.4.0_01\jre\lib\ext\mm.mysql-2.0.4-bin.jar Virker det ikke, er jeg totalt lost! Jeg mener det er helt sikkrt at du ikke får fat i driveren.
25. august 2003 - 14:07
#48
Der var jo også en anden mulighed, omdøb jar.filen til en zip-fil (synes jeg er nemmere at arbejde med ) og så extracte den til c:\j2sdk1.4.0_01 Herefter bruger du: SET CLASSPATH=.;c:\j2sdk1.4.0_01\LIB;c:\j2sdk1.4.0_01\com Det kan kun og skal virke !!
25. august 2003 - 15:53
#49
1) Jeg vil fraråde at man anbringer JDBC driver jar filer i lib/ext. Når man opdaterer JDK (Java SDK) så mangler man lige pludeligt noget. Og man får problemer med at have forskellige versioner af samme driver. 2) Jeg vil fraråde at man anbringer JDBC driver har filer i CLASSPATH. Med en lang classpath kan det være meget svært at gennemskue hvad der findes hvor. Og man får også her problemer med at have forskellige versioner af samme driver.
25. august 2003 - 15:53
#50
3) Det hjælper ikke hverken at omdøbe eller udpakke en jar-fil.
25. august 2003 - 15:55
#51
For en almindelig applikation, så angiver man bare classpath til jar-filen eksplicit i java kommandoen. For en web applikation anbringes den i xxxx/WEB-INF/lib (hvis man bruger DriverManager.getConnection direkte) eller i serverens lib directory (hvis man bruger en connection pool eller man skal bruge container managed security).
25. august 2003 - 15:56
#52
Har I checket om klassen faktisk er i jar-filen ?
25. august 2003 - 15:56
#53
Og har jeg lov til at prøve via VNC ?
25. august 2003 - 16:12
#54
Hvis du er der og har tid så må du meget gerne prøve via VNC arne_v
25. august 2003 - 16:20
#55
Din JDBC driver er en gammel en. I den gamle version hedder driveren: org.gjt.mm.mysql.Driver og ikke: com.mysql.jdbc.Driver som den gøre i nyere versioner ! Enten brug det gamle driver navn. Eller opdater din driver.
25. august 2003 - 16:20
#56
Me dhensyn til placering af jar fil har jeg vist tydeligt forklaret min *personlige* mening.
25. august 2003 - 16:22
#57
hvor finder jeg den nye driver
25. august 2003 - 16:24
#58
25. august 2003 - 16:27
#59
mysql-connector-java-3.0.8-stable.zip ikke
25. august 2003 - 16:29
#60
Jeps.
25. august 2003 - 16:30
#61
du må altså undskylde hvis jeg spørger dumt, men nu har jeg taget den her men jeg kan altså ikke se hvad jeg skal gøre med den
25. august 2003 - 16:35
#62
Så laver du et directory: C:\mysqljdbc [eller noget i den stil] unzipper ZIP filen til det directory og kopierer den nye jar-fil til hvor du nul vil have den !
25. august 2003 - 16:37
#63
det er da kun mysql-connector-java-3.0.8-stable-bin jeg skal bruge ikke
25. august 2003 - 16:40
#64
Ja.
25. august 2003 - 16:40
#65
yes så virker det. Tusinde tak for hjælpen :-)))))
25. august 2003 - 19:15
#66
Er der nogen af jer som kan forklare mig følgende. Hvordan kan omtalte jar-fil og totalt identisk java kode køre på linux og ikke på windows, eller var det ikke den driver som blev anvendt på linux, eller var der ændret i java koden ???? Jeg er nemlig pt. stået af på et område, jeg mente at jeg havde rimelig styr på. Derfor spørgsmålet - det haster ikke en kommentar!
25. august 2003 - 19:18
#67
Det må logisk gælde at enten har koden på Linux brugt et andet driver navn eller så har driveren på Linux været nyere. Det sidste lyder sandsyneligt. (den på Windows var ret gammel)
25. august 2003 - 19:21
#68
Godt, d.v.s. vi er tilbage ved sædvanlige ældgamle problem - det gælder om at bruge hovedet ! Takker.
25. august 2003 - 19:39
#69
Jeg opdagede det fordi jeg lavede en jar tvf på jar filen for at checke om den var OK.
25. august 2003 - 21:47
#70
Det er altså lidt mystiskt. Nu har jeg checket en gang til og den eneste db-driver jeg kan finde på min linux maskine er mm.mysql-2.0.4-bin.jar og jeg henviser til den med com.mysql.jdbc.Driver. Der må være noget jeg overser for det kan jo ikke passe. Ohh well. Endnu engang tak for hjælpen begge to ;-)
25. august 2003 - 21:53
#71
Tja, men der må jo ligge en mere ellers hænger det ikke sammen. Men pyt, det virker jo nu.
25. august 2003 - 21:57
#72
Tja - som jeg skrev i mine 15:53-15:55 kommentarer så bør man accesse sine jar filer på en sådan måde at man har helt styr på hvilke man bruger til en given applikation.
Kurser inden for grundlæggende programmering