Avatar billede nielsds Nybegynder
05. juli 2007 - 19:22 Der er 11 kommentarer og
1 løsning

Eksportering af rxtx til JAR fil

Hej Alle

Jeg sidder med en java applikation der har forbindelse til en laser der er knyttet til computerens serial port. I den forbindelse benytter jeg mig af en jar kaldet RXTXcomm (http://www.rxtx.org). Rxtx opretter forbindelse til serielporten i java og jeg har fin kontrol over min laser hvis jeg compiler mit lille program. RXTXcomm benytter sig af to driver filer.

RXTXcomm er ikke en del af Java standard library. RXTXcomm og driverne ligger

Systemet er beregnet til at koere paa windows.

Hvad jeg oensker er at kunne koere mit program ved at aabne en jar fil. Jeg har proevet at eksportere mine filer til en jar.
Mit problem er: Intet sker naar jeg proever at aabne min jar fil?

Min applikation bestaar af en main fil der instantierer en lille GUI kontrol klasse. Nar der trykkes paa en start knap instantieres en laser klasse der starter laseren. Det er laser-klassen der benytter sig af RXTXcomm.

Jeg har proevet at eksportere min mainklasse til jar uden, at den instantierer GUI klassen og min mainklasse aabner fint som jar.

Jeg har proevet at benytte mig af javas udemaerkede tutorial om JAR filer og inkluderet RXTXcomm i manifestet.. virkede heller ikke. Har ogsaa proevet at ligge mine driverfiler og RXTXcomm i diverse biblioteker fx i samme bibliotek som min jar pakke.

Hvordan kan jeg pakke min jar fil saa min laserklasse kan finde RXTXcomm jar filen og RXTXcomm kan benytte sig af driverne?
Avatar billede mikkelbm Nybegynder
05. juli 2007 - 21:06 #1
Hvordan har du genereret din jar-fil? Og hvordan ser dit manifest ud?
Avatar billede mikkelbm Nybegynder
05. juli 2007 - 21:08 #2
Og den rxtx-jar fil bruger sikkert også en .dll fil som skal placeres så den kan læses af rxtx.
Avatar billede nielsds Nybegynder
06. juli 2007 - 00:16 #3
Hey Mikkelbm
Jeg har genereret min jar fil ud fra jBuilder og i commandpromt. I commandpromt ser min kommando således ud:
C:\mit bin dir>jar cmf MANIFEST.MF Knemometri.jar -C:\Knemometri Knemometri.java Knemometri.class

Når jeg eksporterer denne ene klasse vil jar filen gerne åbnes. Både hvis jeg eksporter i commandpromt og fra jBuilder. Hvis jeg derimod instantierer laser klassen i min main-klasse, inkluderer de andre klasser og RXTXcomm samt ændrer mit manifest sker der intet når jeg åbner jar filen.

På nuværende tidspunkt har jeg ikke inkluderet min RXTX fil og mine dll filer i mit manifest fordi jeg ikke kunne få det til at virke. Som du så fint påpeger benytter RXTXcomm to .dll filer, rxtxParallel.dll og rxtxSerial.dll

Min manifestfil ser på nuværende tidspunkt således ud:

Manifest-Version: 1.0
Archive-Sealed: true
Created-By: KnemometiGroup
Main-Class: Knemometri

Har du et foreslag til hvad jeg skal gøre?
På forhånd tak.
Niels
Avatar billede nielsds Nybegynder
06. juli 2007 - 00:32 #4
Hej igen
Jeg så dit svar på et andet spørgsmål mikkelbm (http://www.eksperten.dk/spm/709858) og det jeg tidligere har gjort har nemlig været at lave en class-path til RXTXcomm.jar og de to dll filer i manifestet, men det virkede ikke. Måske har jeg skrevet det i forkert rækkefølge, glemt linjeskift, ikke lagt filerne det rigtige sted, osv. Nogle ideer?

Tak
Niels
Avatar billede nielsds Nybegynder
06. juli 2007 - 00:39 #5
Jeg benytter mig af suns: jdk1.6.0_01
Avatar billede mikkelbm Nybegynder
08. juli 2007 - 16:53 #6
Hvordan starter du din jar-fil?
Avatar billede nielsds Nybegynder
10. juli 2007 - 00:49 #7
Jeg aabner den bare ved at klikke paa filen. Det lille program skal bruges af en sygeplejerske og hun skal bare kunne aabne en eksekverbar fil nemt.
Avatar billede mikkelbm Nybegynder
10. juli 2007 - 10:07 #8
Prøv eventuelt at starte den med kommandoen:

java -jar dinJarFil.jar

i konsollen for at få en sigende fejlbesked.
Og så skal du huske linjeskift efter sidste linje i dit manifest. Og husk hele stien til din main-class hvis den er placeret i en package: bla.software.MainClass
Avatar billede nielsds Nybegynder
11. juli 2007 - 18:41 #9
Så fik jeg endelig løst problemet.

Mit manifest skulle se således ud:

Manifest-Version: 1.0
Archive-Sealed: true
Created-By: KnemometiGroup
Main-Class: Knemometri
Class-Path: RXTXcomm.jar rxtxParallel.dll rxtxSerial.dll

I cmd skulle komprimeringen se således ud:

C:\Programmer\Java\jdk1.6.0_01\bin>jar cmf MANIFEST.MF knemometri.jar -C C:\Knem
ometri Knemometri.java -C C:\Knemometri Knemometri.class -C C:\Knemometri LaserC
ontrolGUI.class -C C:\Knemometri Laser.class

Mine dll filer ligger i mit klasse biblioket med RXTXcomm.jar altså "C:\Knemometri"

Mange tak for hjælpen Mikkelbm. Hvis du smider et svar skal jeg stikke dig nogle point. Nu virker det med komprimering fra cmd, men hvis du kunne fortælle hvordan jeg skulle gøre i jBuilder ville det være super lækkert!

mvh Niels
Avatar billede nielsds Nybegynder
11. juli 2007 - 22:03 #10
Der er faktisk stadig det problem at den ikke kan åbne filen når man klikker på den.
Jeg kan dog godt åbne applikationen når jeg kører den med java -jar dinJarFil.jar
Når jeg klikker på filen sker der ikke noget...
Avatar billede nielsds Nybegynder
11. juli 2007 - 23:39 #11
Så fik jeg det sku til at virke med at man klikker på filen.
Man skal ændre mappeinstillingerne ved at følge en lang tutorial:
http://mindprod.com/jgloss/jar.html
under overskriften "Making Jar Files Double Clickable"

Og såååå virker det
Avatar billede mikkelbm Nybegynder
12. juli 2007 - 13:17 #12
Godt du fik det til at virke. Jeg mener også man kan løse det med dobbeltklik ved at sætte PATH rigtigt i windows.
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