Avatar billede banielsen Nybegynder
24. oktober 2004 - 11:57 Der er 49 kommentarer og
2 løsninger

Problem med jar-fil til My-SQL database connect

Hej
Jeg har lavet en jar-fil til at starte mit program, som bruger en My-SQL database. Min manifest-fil har følgende udseende:

Main-Class: ProgramMain
Class-Path: C:\j2sdk1.4.2_04\jre\lib\ext\mysql-connector-java-3.1.3-beta-bin.jar

Og min build-jar-fil:

cd Class
jar cmf ..\Jar\Program.txt ..\Program.jar *.*
pause

Jar-fil bliver også oprettet og det hele men når jeg vil køre den får jeg følgende fejl

Could not find the main claas. Program will exit

Hvad gør jeg forkert?
Avatar billede arne_v Ekspert
24. oktober 2004 - 12:09 #1
Hedder din main klasse ProgramMain uden pakke ?
Avatar billede banielsen Nybegynder
24. oktober 2004 - 12:21 #2
ja... den ligger helt ude i roden af min pakke-struktur...
hvis jeg går ind i selve jar-filen kan jeg også se at alle class-filerne ligger i den.
Avatar billede arne_v Ekspert
24. oktober 2004 - 12:32 #3
Du kører med:

java -jar Progra,jar

og

jar tvf Program.jar

viser

META-INF/MANIFEST.MF
ProgramMain.class
...

?
Avatar billede banielsen Nybegynder
24. oktober 2004 - 12:34 #4
det fik jeg ikke lige fat i
Avatar billede arne_v Ekspert
24. oktober 2004 - 12:38 #5
ups

java -jar Program.jar
Avatar billede banielsen Nybegynder
24. oktober 2004 - 12:43 #6
Beklager men jeg er stadig ikke helt med på hvad du mener
Avatar billede arne_v Ekspert
24. oktober 2004 - 12:45 #7
Er det den kommando du bruger til at køre jar filen med ?

Og ser output sådan ud når du lister indholdet af jar ?
Avatar billede banielsen Nybegynder
24. oktober 2004 - 12:58 #8
jeg dobbelt-klikker blot på jar-filen

og ja, mit output ser ud på den måde (dog ikke med store bogstaver - har det nogen betydning))
Avatar billede arne_v Ekspert
24. oktober 2004 - 13:51 #9
ProgramMain.class skal være præcis sådan

jeg er ikke sikker med manifestet
Avatar billede banielsen Nybegynder
24. oktober 2004 - 13:55 #10
ProgramMain.class er præcis sådan.
Hvordan får jeg rettet manifestet til store bogstaver?
Avatar billede arne_v Ekspert
24. oktober 2004 - 13:57 #11
Jeg tror ikke at det er det.

Den har fundet manifestet - eller viste den ikke hvad din main class var.
Avatar billede arne_v Ekspert
24. oktober 2004 - 13:58 #12
Du har ikke package i dine .java filer ?
Avatar billede banielsen Nybegynder
24. oktober 2004 - 13:59 #13
jo... jeg har tre pakker... men main-filen ligger i roden af hele pakke-strukturen og ikke inde i nogen pakke (den ligger "direkte" i class-mappen)
Avatar billede _carsten Nybegynder
24. oktober 2004 - 14:05 #14
Hmm - ved ikke om jeg kan tilføje noget, men

Dit manifest bør se sådan ud:

  Manifest-Version: 1.0
  Main-Class: ProgramMain
  Class-Path: C:\j2sdk1.4.2_04\jre\lib\ext\mysql-connector-java-3.1.3-beta-bin.jar


Din jar sådan:
   
    meta-inf\MANIFEST.MF
    ProgramMain.class
    pakke1

Så bør du kunne dobbeltklikke!
Avatar billede banielsen Nybegynder
24. oktober 2004 - 14:28 #15
Carsten --> det er nemlig også sådan de ser ud:), men den vil bare ikke starte
Avatar billede banielsen Nybegynder
24. oktober 2004 - 14:31 #16
manifest står bare ikke med stort (nogen forskel??)
Avatar billede _carsten Nybegynder
24. oktober 2004 - 14:32 #17
Så må jo være den her ".;" der mangler

Prøv:  Class-Path: .;C:\j2sdk1.4.2_04\jre\lib\ext\mysql-connector-java-3.1.3-beta-bin.jar
Avatar billede arne_v Ekspert
24. oktober 2004 - 14:33 #18
Den bør være:

META-INF/MANIFEST.MF
Avatar billede _carsten Nybegynder
24. oktober 2004 - 14:34 #19
Nej - det er ligegyldigt
Avatar billede arne_v Ekspert
24. oktober 2004 - 14:37 #20
carsten>

1)  jar filer i manifest Class-Path er adskilt af mellemrum

2)  jeg tror ikke rigtigt at . gør nogen stor forskel her
Avatar billede _carsten Nybegynder
24. oktober 2004 - 14:41 #21
Næææ - det der gør forskellen har du allerede været inde på !!

Passer ikke hvad jeg skrev, det skal være med STORT som Arne skriver

META-INF/MANIFEST.MF

Har lige testet!!
Avatar billede banielsen Nybegynder
24. oktober 2004 - 14:44 #22
okay... men hvordan får jeg så skrevet META-INF/MANIFEST.MF med stort?
Avatar billede _carsten Nybegynder
24. oktober 2004 - 15:00 #23
jar cmf Sti\Til\MANIFEST.MF Jarnavn.jar filnavne.class
Avatar billede banielsen Nybegynder
24. oktober 2004 - 15:14 #24
den er jeg ikke helt med på... min build-jar-fil har nu følgende udseende...

cd Class
jar cmf ..\Jar\Program.txt ..\Program.jar *.*
pause

hvordan mener du jeg skal lave den om?
Avatar billede _carsten Nybegynder
24. oktober 2004 - 15:17 #25
Er ..\Jar\Program.txt == Manifest  ???
Avatar billede banielsen Nybegynder
24. oktober 2004 - 15:20 #26
Min manifest-fil har følgende udseende:

Main-Class: ProgramMain
Class-Path: .;C:\j2sdk1.4.2_04\jre\lib\ext\mysql-connector-java-3.1.3-beta-bin.jar
Avatar billede _carsten Nybegynder
24. oktober 2004 - 15:21 #27
Ja - men hvor er den fysisk placeret og hvor er class-filer placeret ??
Avatar billede banielsen Nybegynder
24. oktober 2004 - 15:27 #28
-mappe1: BuidJar-fil
    -mappe2 (i mappe1): manifest-fil
    -mappe3 (i mappe1): class-filer
Avatar billede _carsten Nybegynder
24. oktober 2004 - 15:31 #29
jar cmf mappe1\mappe2\MANIFEST.MF mappe1\Program.jar mappe1\mappe3\*.class
Avatar billede _carsten Nybegynder
24. oktober 2004 - 15:36 #30
Iøvrigt skal du lige indsætte følgende linie øverst i dit manifest

Manifest-Version: 1.0
Avatar billede banielsen Nybegynder
24. oktober 2004 - 15:43 #31
Det står stadig med småt når jeg åbner jar-filen
Avatar billede _carsten Nybegynder
24. oktober 2004 - 15:46 #32
Hvordan konstaterer du det ??

Bruger du følgende måde: jar tf mappe1\Program.jar    ????
Avatar billede banielsen Nybegynder
24. oktober 2004 - 15:48 #33
jeg kan åbne jar-filen og køre den nu... men jeg kan ikke få kontakt til min database "igennem" den
Avatar billede _carsten Nybegynder
24. oktober 2004 - 15:50 #34
Hvilke fejl får du ??
Avatar billede arne_v Ekspert
24. oktober 2004 - 15:52 #35
Prøv og ret din Class-Ptah tilbage til det oprindelige udem .;
Avatar billede arne_v Ekspert
24. oktober 2004 - 15:52 #36
Class-Path
Avatar billede banielsen Nybegynder
24. oktober 2004 - 16:04 #37
det virker heller ikke selvom jeg fjerner ".;"... jeg har lidt svært ved at finde ud af den præcise fejl.. jeg får jo ikke skrevet nogen fejl ud når jeg køre jar-filen (men køre jeg programmet direkte fra mit kodeprogram køre det udemærket).
Men jeg tror umiddelbart ikke at jeg får kastet nogle fejl, det er bare som om at der bliver returneret null istedet for en tabel
Avatar billede arne_v Ekspert
24. oktober 2004 - 16:05 #38
Prøv med:

Class-Path: mysql-connector-java-3.1.3-beta-bin.jar

og placer den fil i samme directory som din egen jar fil
Avatar billede banielsen Nybegynder
24. oktober 2004 - 16:11 #39
så virker, hvis jeg placere den i samme directory... er der nogen logisk forklaring på hvorfor?
Avatar billede arne_v Ekspert
24. oktober 2004 - 16:16 #40
Der må være et eller andet med syntax.

Du kan evt. prøve:

Class-Path: file:/C:/j2sdk1.4.2_04/jre/lib/ext/mysql-connector-java-3.1.3-beta-bin.jar
Avatar billede arne_v Ekspert
24. oktober 2004 - 16:17 #41
Men jeg vil kalde det god skik og brug at bundle alle jar filerne i samme dir.
Avatar billede _carsten Nybegynder
24. oktober 2004 - 16:24 #42
--> Arne - har jeg ikke ret i at det ikke skulle være nødvendigt at medtage mysql-connector-java-3.1.3-beta-bin.jar i Class-Path i manifestet, når filen er placeret i ....jre\lib\ext\
Avatar billede banielsen Nybegynder
24. oktober 2004 - 16:24 #43
Arne_v --> okay... det virker perfekt med Class-Path: file:/C:/j2sdk1.4.2_04/jre/lib/ext/mysql-connector-java-3.1.3-beta-bin.jar.
Og tak for rådet angående at bundle jar-filer - det er nok værd at tænke meget over hvis man bruger mange eksterne jar-fil:)

Tak for hjælpen til jer begge:)
Smid et svar begge to... så vil jeg fordele point (Arne_v du får lidt mere end Carsten da det jo var din løsning som virkede)
Avatar billede arne_v Ekspert
24. oktober 2004 - 16:25 #44
svar
Avatar billede arne_v Ekspert
24. oktober 2004 - 16:27 #45
carsten>

Jo - det burde det egentligt.
Avatar billede _carsten Nybegynder
24. oktober 2004 - 16:28 #46
Ok med mig, at kun Arne for point!
Avatar billede arne_v Ekspert
24. oktober 2004 - 16:28 #47
Men jeg kan stadigvæk bedste lide alle jar i samme dir filosofien.

Når man skal kopiere noget til en anden PC så er det meget nemmere at huske det hele.

Det er nemmere med flere forskellige versioner af samme software.
Avatar billede arne_v Ekspert
24. oktober 2004 - 16:30 #48
Og nemmere når man opdaterer Java version.
Avatar billede _carsten Nybegynder
24. oktober 2004 - 16:34 #49
Helt klart - jeg har aldrig brugt jre\lib\ext\

Ellers skal man rundt og checke opsætning og diverse på en masse maskiner
Avatar billede banielsen Nybegynder
24. oktober 2004 - 16:40 #50
jah.. en rigtig god grund må man sige Carsten. tak for det, smider du lige et svar?:)
Avatar billede _carsten Nybegynder
24. oktober 2004 - 16:42 #51
Så pyt da!
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