[Java] JAR problemen

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo allemaal,

ik zit werkelijk met mijn handen in het haar om een executable JAR file te maken...
ik heb zowat alle tutorials en howto's gelezen op het hele internet,
en ben het nu een beetje stontzat... (sorry voor mn taalgebruik)
Het wil maar niet lukken!!

ik heb een applicatie gemaakt in JBuilder 2005 Foundation,
deze app implementeerd threads en is daarbij dus runnable:
- implements runnable
- run() { <<niet leeg>> }
- public static void main(String[] args) { <<leeg>> }

De applicatie scant netwerkdrives naar mediabestanden en berekend dan een hele bunch gegevens.
daarvoor gebruik ik een aantal 3rd party JARs (MP3, OGG, JDBC)
Wanneer ik mijn project in JBuilder draai doet ie alles gewoon netjes...

maar het maken van een JAR lukt me dus niet, ik heb de tool JARWizard geprobeerd,
maar welke manier ik ook gebruik... hij blijft errors geven:
- noClassdeffound
- main method not found
- ....

Is er iemand die me aub kan helpen?!?!?!?
stuur me anders ff een mail op t_mannessen[at]hotmail.com
dan zal ik je het project doorsturen
Is vrij belangrijk voor me, is in het kader van mijn afstudeerstage :P

txy alvast
Tom

Acties:
  • 0 Henk 'm!

  • zwippie
  • Registratie: Mei 2003
  • Niet online

zwippie

Electrons at work

Je moet ergens een main in een klasse hebben, anders kan je applicatie niet worden opgestart. Ook moet er natuurlijk code staat in je main, misschien alleen maar
Java:
1
new MyApp().run()
Waarschijnlijk run je je app nu als Bean vanuit JBuilder, vandaar dat dat wel goed gaat.

How much can you compute with the "ultimate laptop" with 1 kg of mass and 1 liter of volume? Answer: not more than 10^51 operations per second on not more than 10^32 bits.


Acties:
  • 0 Henk 'm!

  • DroogKloot
  • Registratie: Februari 2001
  • Niet online

DroogKloot

depenisvanjezus

Heb je een manifest file toegevoegd?

Acties:
  • 0 Henk 'm!

  • Nick_S
  • Registratie: Juni 2003
  • Laatst online: 02:13

Nick_S

++?????++ Out of Cheese Error

Om je project te compileren en te kunnen JAR'en gebruik je meestal Ant. Ant in JBuilder.

Om een jar te maken, gebruik je de Ant task Jar task in combinatie met een Manifest file, welke informatie bevat over je Jar file, welke libraries er op het classpath komen en in welke klasse je main functie zich bevind.

Manifest file:
code:
1
2
3
4
5
6
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.6.5
Created-By: 1.4.2_09-b05 (Sun Microsystems Inc.)
Built-By: YourName
Main-Class: your.package.and.class.with.main.function
Class-Path: lib/log4j-1.2.12.jar lib/xalan.jar


Ant build file:
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?xml version="1.0"?>
<project name="YourProjectName" default="all">
    <description>
            Builds some stuff in the SonicHosting
    </description>
    <property name="project.name" value="YourProjectName" />
    <property name="bin" location="bin/" />
    <property name="src" location="src/" />
    <property name="dist" location="dist/" />
    <property name="lib" location="lib/" />

    <!-- - - - - - - - - - - - - - - - - - 
          target: init                      
         - - - - - - - - - - - - - - - - - -->
    <target name="init">
        <mkdir dir="${dist}" />
        <mkdir dir="${bin}" />
        <mkdir dir="${dist}/lib" />

        <copy todir="${dist}/lib">
            <fileset dir="${lib}" />
        </copy>
    </target>

    <!-- ================================= 
          target: compile
         ================================= -->
    <target name="compile" description="--> Compiles source code" depends="init">
        <javac srcdir="${src}" destdir="${bin}">
            <classpath>
                <pathelement location="${lib}/log4j-1.2.12.jar" />
                <pathelement location="${lib}/xalan.jar" />
            </classpath>
        </javac>
    </target>

    <!-- ================================= 
          target: jar              
         ================================= -->
    <target name="jar" depends="compile" description="--> JARs up the whole lot.">
        <jar jarfile="${dist}/${project.name}.jar" basedir="${bin}" manifest="MANIFEST.MF" />
    </target>
</project>

Ik hoop hiermee weer even genoeg aanknoop punten gegeven te hebben, waar je weer mee verder kunt.

[ Voor 17% gewijzigd door Nick_S op 10-01-2006 15:27 ]

'Nae King! Nae quin! Nae Laird! Nae master! We willna' be fooled agin!'


Acties:
  • 0 Henk 'm!

  • bvp
  • Registratie: Maart 2005
  • Laatst online: 18-08 12:21

bvp

Heb je er wel allemaal .class-bestanden van al?

Zo ja, zoek deze op in command-prompt en ga 1 dir hoger staan.

bijv. .class-bestanden in:
c:\temp\bin\classes > c:\temp\bin

maak in de bin een .txt aan myManifest.txt met hierin:
Let op dat je na de laatste regel nog een enter hebt staan.

Main-Class: classes.JEMAINCLASS (met public static void main().....)
Class-Path: lib/AL_JE_GEBRUIKTE_JARS.jar

C:\temp\bin><PATH VAN JE JAR.EXE>jar cvfm APPLICATIE_NAAM.jar ../myManifest.txt *

Executable-jar gemaakt als het goed is.

Klaar is Klara

[ Voor 9% gewijzigd door bvp op 10-01-2006 15:36 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
@zwippie
vanuit JBuilder heb ik een Application gemaakt, geen bean
ik heb je stuk code geprobeerd... geen succes "main method not found"

het volgende had ik ook al geprobeerd in mijn main()

code:
1
2
3
4
        System.out.println("bl@@t");
        MediaScanClass msc = new MediaScanClass();
        Thread th = new Thread(msc);
        th.start();

die bl@@t geeft ie wel weer in de console, maar daarna komt hij met een error NoClassDeffFound

@Droogkloot
Manifest file heb ik inderdaad toegevoegd, of beter die wordt automatisch toegevoegd door die JARWizard

code:
1
2
Manifest-Version: 1.0
Main-Class: MediaScanClass


@Nick_S
ik heb de JBuilder foundation, weet niet of de Ant JAR builder daar in zit.... maar dat ga ik nu direct controleren

iig al heel erg bedankt voor jullie hulp!!
appreciate it.
Tom

[ Voor 7% gewijzigd door Verwijderd op 10-01-2006 15:37 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
@bvp
'jar' is not recognized as an internal or external command, operable program or batch file.

is de foutmelding die ik krijg na de bewerking: jar cvfm Mediascan.jar ../manifest.txt

Acties:
  • 0 Henk 'm!

  • bvp
  • Registratie: Maart 2005
  • Laatst online: 18-08 12:21

bvp

Verwijderd schreef op dinsdag 10 januari 2006 @ 15:45:
@bvp
'jar' is not recognized as an internal or external command, operable program or batch file.

is de foutmelding die ik krijg na de bewerking: jar cvfm Mediascan.jar ../manifest.txt
Waar is de locatie van je jar.exe?

Bijv.
C:\java\jdk142_05\bin\jar

Dus dan niet:
c:\temp\bin>jar cvfm Mediascan.jar ../manifest.txt *

^^^^ ook * meenemen voor alle bestanden

Maar:
c:\temp\bin>C:\java\jdk142_05\bin\jar cvfm Mediascan.jar ../manifest.txt *

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
@Nick_S
Ant is not correctly configured. Check Project | Project Properties | Ant | Build, and make sure the Ant home directory is correct.

welke home dir moet Ant hebben?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
@bvp
ahaa... my mistake

H:\Java\Projects\MediaScan\classes>"C:\Program Files\Java\jdk1.5.0_04\bin\jar" cvfm mediascanapp.jar manifest.txt *
java.io.IOException: line too long
at java.util.jar.Attributes.read(Attributes.java:362)
at java.util.jar.Manifest.read(Manifest.java:167)
at java.util.jar.Manifest.<init>(Manifest.java:52)
at sun.tools.jar.Main.run(Main.java:123)
at sun.tools.jar.Main.main(Main.java:903)

(bij ../manifest.txt kon hij manifest niet vinden, klopt ook)

Acties:
  • 0 Henk 'm!

Verwijderd

Er zijn een heleboel mensen die reageren die vast wel weten hoe het moet, het lijkt me alleen handiger als de TS zelf uitzoekt een jar moet worden gemaakt. Dit kan echt heel makkelijk met Google, je krijgt echt genoeg nuttige resultaten.. Ik heb het idee dat de TS veel meer heeft aan een aantal sites die het helemaal uitleggen in plaats van reacties hier die een deel van het probleem slechts behandelen :)

Om je enigszins tegemoet te komen.. als ik op Google zoek naar het laatstgenoemde probleem van je, dan geeft de 2e site van de resultaten een verklaring van het probleem. Succes!

[ Voor 21% gewijzigd door Verwijderd op 10-01-2006 16:45 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ik heb de volgende libs:

C:\Borland\JBuilder2005Foundation\lib\jbcl.jar C:\Borland\JBuilder2005Foundation\jdk1.4\jre\lib\ext\tritonus_1.4\tritonus_dsp.jar
C:\Borland\JBuilder2005Foundation\jdk1.4\jre\lib\ext\tritonus_1.4\tritonus_mp3.jar
C:\Borland\JBuilder2005Foundation\jdk1.4\jre\lib\ext\tritonus_1.4\tritonus_share.jar
C:\Borland\JBuilder2005Foundation\jdk1.4\jre\lib\ext\tritonus_1.4\mp3spi1.9.4.jar
C:\Borland\JBuilder2005Foundation\jdk1.4\jre\lib\ext\tritonus_1.4\jl1.0.jar
C:\Borland\JBuilder2005Foundation\jdk1.4\jre\lib\ext\JDBC\msbase.jar
C:\Borland\JBuilder2005Foundation\jdk1.4\jre\lib\ext\JDBC\mssqlserver.jar
C:\Borland\JBuilder2005Foundation\jdk1.4\jre\lib\ext\JDBC\msutil.jar
C:\Borland\JBuilder2005Foundation\jdk1.4\jre\lib\ext\OGG\jogg-0.0.7.jar
C:\Borland\JBuilder2005Foundation\jdk1.4\jre\lib\ext\OGG\jorbis-0.0.15.jar
C:\Borland\JBuilder2005Foundation\jdk1.4\jre\lib\ext\OGG\tritonus_share.jar
C:\Borland\JBuilder2005Foundation\jdk1.4\jre\lib\ext\OGG\vorbisspi1.0.2.jar

Wanneer ik in mn manifest een aantal libs weg laat... dan maakt ie wel een JAR op bvp zijn manier.
als ik dan in de JAR kijk lijkt me alles goed qua structuur de manifest file is ook correct.

Dubbelklik ik op die JAR : Could not find the main class. Program will exit
In console: H:\Java\Projects\MediaScan\classes>java -jar mediascanapp.jar
Exception in thread "main" java.lang.NoClassDefFoundError: mediascan/MediaScanClass

*sigh*
/me wordt wanhopig :(

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op dinsdag 10 januari 2006 @ 16:41:
Er zijn een heleboel mensen die reageren die vast wel weten hoe het moet, het lijkt me alleen handiger als de TS zelf uitzoekt een jar moet worden gemaakt. Dit kan echt heel makkelijk met Google, je krijgt echt genoeg nuttige resultaten.. Ik heb het idee dat de TS veel meer heeft aan een aantal sites die het helemaal uitleggen in plaats van reacties hier die een deel van het probleem slechts behandelen :)
ehm... excuseer? ik heb écht wel gezocht en geprobeerd alvorens hier een n00b-figuur te slaan,
zoals ik in mijn startpost al zei:
ik heb zowat alle tutorials en howto's gelezen op het hele internet,
en ben het nu een beetje stontzat... (sorry voor mn taalgebruik)
Het wil maar niet lukken!!

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op dinsdag 10 januari 2006 @ 16:46:
[...]

ehm... excuseer? ik heb écht wel gezocht en geprobeerd alvorens hier een n00b-figuur te slaan,
zoals ik in mijn startpost al zei:


[...]
Ik kan me niet voorstellen dat geen enkele tutorial op internet jou heeft kunnen helpen.. De foutmeldingen die je vermeldde in je startpost worden in elke tutorial behandeld! Dus vandaar dat ik het raar vind dat die tutorials geen uitkomst bieden..

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Wanneer ik een manifest file zonder extra jars heb, en een main-methode met enkel een System.out.println : dan wordt deze jar goed uitgevoerd.

Wanneer ik een manifest file met één of meerdere extra lib JARs heb, en een main-methode met enkel een System.out.println, komt hij met de volgende foutmelding:
Exception in thread "main" java.lang.NoClassDefFoundError: mediascan/MediaScanClass

is er iets met de manier waarop ik die lib JARs declareer in de manifest?

Géén JAR
code:
1
2
Manifest-Version: 1.0
Main-Class: mediascan.MediaScanClass


1 JAR
code:
1
2
3
Manifest-Version: 1.0
Main-Class: mediascan.MediaScanClass
Class-Path: C:\Borland\JBuilder2005Foundation\lib\jbcl.jar


meerdere JARs
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Manifest-Version: 1.0
Main-Class: mediascan.MediaScanClass
Class-Path: C:\Borland\JBuilder2005Foundation\lib\jbcl.jar
 C:\Borland\JBuilder2005Foundation\jdk1.4\jre\lib\ext\tritonus_1.4\tritonus_dsp.jar
 C:\Borland\JBuilder2005Foundation\jdk1.4\jre\lib\ext\tritonus_1.4\tritonus_mp3.jar
 C:\Borland\JBuilder2005Foundation\jdk1.4\jre\lib\ext\tritonus_1.4\tritonus_share.jar
 C:\Borland\JBuilder2005Foundation\jdk1.4\jre\lib\ext\tritonus_1.4\mp3spi1.9.4.jar
 C:\Borland\JBuilder2005Foundation\jdk1.4\jre\lib\ext\tritonus_1.4\jl1.0.jar
 C:\Borland\JBuilder2005Foundation\jdk1.4\jre\lib\ext\JDBC\msbase.jar
 C:\Borland\JBuilder2005Foundation\jdk1.4\jre\lib\ext\JDBC\mssqlserver.jar
 C:\Borland\JBuilder2005Foundation\jdk1.4\jre\lib\ext\JDBC\msutil.jar
 C:\Borland\JBuilder2005Foundation\jdk1.4\jre\lib\ext\OGG\jogg-0.0.7.jar
 C:\Borland\JBuilder2005Foundation\jdk1.4\jre\lib\ext\OGG\jorbis-0.0.15.jar
 C:\Borland\JBuilder2005Foundation\jdk1.4\jre\lib\ext\OGG\tritonus_share.jar
 C:\Borland\JBuilder2005Foundation\jdk1.4\jre\lib\ext\OGG\vorbisspi1.0.2.jar


oké...
en wanneer ik dan evt uiteindelijk een executable jar heb mét libs...
hoe initialiseer ik dan mijn thread van run()... want dat doet ie dus niet.

[ Voor 10% gewijzigd door Verwijderd op 10-01-2006 17:41 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op dinsdag 10 januari 2006 @ 17:21:
[...]

Ik kan me niet voorstellen dat geen enkele tutorial op internet jou heeft kunnen helpen.. De foutmeldingen die je vermeldde in je startpost worden in elke tutorial behandeld! Dus vandaar dat ik het raar vind dat die tutorials geen uitkomst bieden..
ja... en denk je niet dat ik dat geprobeerd heb?
die zaken die in de tutorials besproken worden hebben voorgaande replyers ook naar voren gebracht...
maar dan kom ik toch nog andere problemen tegen...

ik ben écht geen java-wiz en als ik al dagen loop te sukkelen om mijn project in een JAR te bakken dan mag ik toch om hulp vragen?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
oké stap verder :)
ik heb de libs uit de Borland JDK gehaald... en verplaatst

C:\Borland\JBuilder2005Foundation\jdk1.4\jre\lib\ext\tritonus_1.4\tritonus_dsp.jar
is nu
C:\Program Files\Java\jdk1.5.0_04\jre\lib\ext\tritonus_1.4\tritonus_dsp.jar

mijn manifest ziet er nu als volgt uit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Manifest-Version: 1.0
Main-Class: mediascan.MediaScanClass
Class-Path: "C:\Program Files\Java\jdk1.5.0_04\lib\jbcl.jar"
 "C:\Program Files\Java\jdk1.5.0_04\jre\lib\ext\tritonus_1.4\tritonus_dsp.jar"
 "C:\Program Files\Java\jdk1.5.0_04\jre\lib\ext\tritonus_1.4\tritonus_mp3.jar"
 "C:\Program Files\Java\jdk1.5.0_04\jre\lib\ext\tritonus_1.4\tritonus_share.jar"
 "C:\Program Files\Java\jdk1.5.0_04\jre\lib\ext\tritonus_1.4\mp3spi1.9.4.jar"
 "C:\Program Files\Java\jdk1.5.0_04\jre\lib\ext\tritonus_1.4\jl1.0.jar"
 "C:\Program Files\Java\jdk1.5.0_04\jre\lib\ext\JDBC\msbase.jar"
 "C:\Program Files\Java\jdk1.5.0_04\jre\lib\ext\JDBC\mssqlserver.jar"
 "C:\Program Files\Java\jdk1.5.0_04\jre\lib\ext\JDBC\msutil.jar"
 "C:\Program Files\Java\jdk1.5.0_04\jre\lib\ext\OGG\jogg-0.0.7.jar"
 "C:\Program Files\Java\jdk1.5.0_04\jre\lib\ext\OGG\jorbis-0.0.15.jar"
 "C:\Program Files\Java\jdk1.5.0_04\jre\lib\ext\OGG\tritonus_share.jar"
 "C:\Program Files\Java\jdk1.5.0_04\jre\lib\ext\OGG\vorbisspi1.0.2.jar"

met de volgende main-class
code:
1
2
3
4
5
    public static void main(String[] args) {
        System.out.println("Dit is de Main() class");
        MediaScanClass msc = new MediaScanClass();
        msc.run();
    }
komt hij met de foutmelding:

H:\Java\Projects\MediaScan\classes>java -jar mediascan.jar
Dit is de Main() class
Exception in thread "main" java.lang.NoClassDefFoundError: com/borland/jbcl/layout/XYLayout
at mediascan.MediaScanClass.<init>(MediaScanClass.java:25)
at mediascan.MediaScanClass.main(MediaScanClass.java:181)

wat dus wilt zeggen dat hij op een of andere manier de Classpath: "C:\Program Files\Java\jdk1.5.0_04\lib\jbcl.jar" niet heeft kunnen vinden

[ Voor 61% gewijzigd door Verwijderd op 10-01-2006 18:21 ]


Acties:
  • 0 Henk 'm!

  • bvp
  • Registratie: Maart 2005
  • Laatst online: 18-08 12:21

bvp

@Tmannessen

Check je mail

Acties:
  • 0 Henk 'm!

  • Confusion
  • Registratie: April 2001
  • Laatst online: 01-03-2024

Confusion

Fallen from grace

Als je al die jars nou eens in dezelfde directory als je eigen jar zet en al die absolute paden weglaat? Dat verkleint de kans op fouten. Daarnaast moeten volgens mij de verschillende paden door een spatie gescheiden zijn: heb je overal een spatie aan het einde van de regel staan?

Wie trösten wir uns, die Mörder aller Mörder?


Acties:
  • 0 Henk 'm!

  • qless
  • Registratie: Maart 2000
  • Laatst online: 21-08 22:26

qless

...vraag maar...

Je kunt de benodigde libraries (.jars/classes) ook mee laten nemen als depencie in de jar file die jij bouwt, zodat je alles in 1 file hebt.

Website|Air 3s|Mini 4 Pro|Avata 2|Canon R6|Canon 5d2|8 fisheye|14f2.8|24f2.8|50f1.8|135f2|10-22|17-40|24-105|70-300|150-600


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
@bvp
zie geen mail, naar welk adres heb je dat gestuurd?

@Confusion
absolute > relatieve paden : goed idee, probeer ik morgen (op mn werk) direct
als je meer als een bepaald aantal karakters hebt moet je een enter met in het begin een spatie doen... heb ik ergens gelezen

@qless
alles in 1 file zou natuurlijk helemaal mooi zijn, anders moet ik ook nog evt de jars distibueren over de gebruikers... hoe doe je dat dan precies? (heb ik nog niet aan gedacht en zal ik morgen eens opzoeken)

heel erg bedankt voor de tips!

Acties:
  • 0 Henk 'm!

  • bvp
  • Registratie: Maart 2005
  • Laatst online: 18-08 12:21

bvp

Verwijderd schreef op dinsdag 10 januari 2006 @ 23:38:
@bvp
zie geen mail, naar welk adres heb je dat gestuurd?

@Confusion
absolute > relatieve paden : goed idee, probeer ik morgen (op mn werk) direct
als je meer als een bepaald aantal karakters hebt moet je een enter met in het begin een spatie doen... heb ik ergens gelezen

@qless
alles in 1 file zou natuurlijk helemaal mooi zijn, anders moet ik ook nog evt de jars distibueren over de gebruikers... hoe doe je dat dan precies? (heb ik nog niet aan gedacht en zal ik morgen eens opzoeken)

heel erg bedankt voor de tips!
Heb je een mail gestuurd naar t_mannessen@hotmail.com
Op de manier waarop ik hierboven uitgelegd had, heb je ook alles in 1 executable jar.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
@bvp...
nu 2maal mail gehad van je :)
je hebt reactie ennuh: bedankt!

(hehe eindelijk... hotmail :( )

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ik heb net ff met die relatieve paden gewerkt...

wanneer ik in console H:\Java\Projects\MediaScan\classes>java -jar mediascan.jar doe
dan geeft hij geen errors... maar het volgende gebeurt :
- hij scant de netwerkdrive en controleert welke bestanden verwerkt moeten worden
- hij geeft in console de controlelijnen weer.
- MAAR : dit moet pas gebeuren wanneer de GUI van de app is opgestart EN op een knop is geklikt.

hij initialiseert dus niet goed

Acties:
  • 0 Henk 'm!

  • Macros
  • Registratie: Februari 2000
  • Laatst online: 15-05 16:29

Macros

I'm watching...

Dat zal toch echt aan je programma zelf liggen, denk je niet?

"Beauty is the ultimate defence against complexity." David Gelernter


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ja, dat denk ik wel ja....
maar weet niet echt waarom, in JBuilder gaat het wel goed.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het werkt!!

bvp --> many thanks!!

this.setVisible(true); vergeten in constructor :/

[ Voor 5% gewijzigd door Verwijderd op 11-01-2006 11:51 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
of althans....
hij start de gui op en scant ook.
maar als ik de JAR verplaats vindt hij de 3rd party libs niet meer, ook al zitten die in de JAR

Acties:
  • 0 Henk 'm!

  • TukkerTweaker
  • Registratie: November 2001
  • Laatst online: 20-08 16:04
Verwijderd schreef op woensdag 11 januari 2006 @ 12:07:
of althans....
hij start de gui op en scant ook.
maar als ik de JAR verplaats vindt hij de 3rd party libs niet meer, ook al zitten die in de JAR
de paden zijn relatief weet je nog

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ja, dat snap ik.
maar wat zou het nut zijn van de 3rd party libs mee te nemen in de JAR, als hij ze niet gebruikt.

Acties:
  • 0 Henk 'm!

  • Confusion
  • Registratie: April 2001
  • Laatst online: 01-03-2024

Confusion

Fallen from grace

Die libs zitten blijkbaar niet in de jar. Het classpath verwijst naar dingen buiten de jar. Je moet ze dus meeverplaatsen. Als je ze in je jar wilt meebakken, dan kan dat natuurlijk ook, maar dan heb je het classpath niet meer nodig.

Wie trösten wir uns, die Mörder aller Mörder?


Acties:
  • 0 Henk 'm!

  • bvp
  • Registratie: Maart 2005
  • Laatst online: 18-08 12:21

bvp

Confusion schreef op woensdag 11 januari 2006 @ 12:44:
Die libs zitten blijkbaar niet in de jar. Het classpath verwijst naar dingen buiten de jar. Je moet ze dus meeverplaatsen. Als je ze in je jar wilt meebakken, dan kan dat natuurlijk ook, maar dan heb je het classpath niet meer nodig.
Hoe bak je de lib/jars mee in de executable jar zodat deze worden gebruikt i.p.v. de externe libs?
Loop zelf op het moment nl. ook tegen dit probleem aan.
En de lib-dir met de jars zitten toch echt in de executable jar...

Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 03:26
Dit topic is hét argument waarom je niet moet leren programmeren met een IDE en zeker geen tools moet gebruiken waarvan je niet begrijpt wat ze doen (JAR packers enzo). Ik zou 'm bijna bookmarken voor toekomstige discussies.

Waarschijnlijk heeft de TS z'n probleem al opgelost, maar waar 'ie had moeten beginnen was de Java tutorial: Packaging Programs in JAR Files.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
@Confusion
dezelfde vraag als bvp...
de libs zitten wel in de exec JAR, maar worden niet gebruikt.

Structuur JAR:
libs\ <alle libs>
mediascan\ <alle class-files>
META-INF\ MANIFEST.MF

manifest:
Manifest-Version: 1.0
Main-Class: mediascan.MediaScanClass
Class-Path: libs\jbcl.jar libs\tritonus_1.4\tritonus_dsp.jar libs\tritonus_1.4\tritonus_mp3.jar libs\tritonus_1.4\tritonus_share.jar libs\tritonus_1.4\mp3spi1.9.4.jar libs\tritonus_1.4\jl1.0.jar libs\JDBC\msbase.jar libs\JDBC\mssqlserver.jar libs\JDBC\msutil.jar libs\OGG\jogg-0.0.7.jar libs\OGG\jorbis-0.0.15.jar libs\OGG\tritonus_share.jar libs\OGG\vorbisspi1.0.2.jar

je zegt dat de Class-Path dan nier meer moet?
hoe "weet" hij dan dat de libs daar zijn?

Acties:
  • 0 Henk 'm!

  • Confusion
  • Registratie: April 2001
  • Laatst online: 01-03-2024

Confusion

Fallen from grace

bvp schreef op woensdag 11 januari 2006 @ 12:47:
Hoe bak je de lib/jars mee in de executable jar zodat deze worden gebruikt i.p.v. de externe libs?
Jars uitpakken, zodat je de fully qualified directory structuur overhoudt en daarna alles ineens inpakken. Ik zei niet dat het handig was.
En de lib-dir met de jars zitten toch echt in de executable jar...
Dus op je java classpath staan nu ./x/y/z/a.class, ./x/y/z/b.class, /x/y/zz/a.class, etc., voor de classes in je eigen packages x.y.z en x.y.zz en vervolgens nog ./libs/com/tritonius/mp3/a.class, ./libs/com/tritonius/mp3spi/b.class, etc., terwijl je applicatie zoekt naar ./com/tritonius/mp3/a.class zonder de ./libs ervoor. Toen je het de eerste keer probeerde had je waarschijnlijk de externe libs nog in de directory ./libs/ staan en daar verwijst het Class-Path in de Manifest file zodanig naar dat de goede structuur op je classpath terecht komt. Die externe libs horen in principe niet in je jar.

Overigens kan je ze natuurlijk ook gewoon op de java cmdline specificeren met -cp. Wrap er een shell scriptje omheen met een verwijzing naar de oorspronkelijke jars en klaar.

[ Voor 4% gewijzigd door Confusion op 11-01-2006 15:04 ]

Wie trösten wir uns, die Mörder aller Mörder?


Acties:
  • 0 Henk 'm!

  • bvp
  • Registratie: Maart 2005
  • Laatst online: 18-08 12:21

bvp

Confusion schreef op woensdag 11 januari 2006 @ 15:03:
[...]
Die externe libs horen in principe niet in je jar.
Ok, thnx
Dat is dus eigenlijk wat ik wilde horen maar waar ik nergens iets bruikbaars over heb gelezen tot nu toe.
Heb het hiervoor ook wel es met een .cmd gedaan maar wilde nu een executable jar.
Het leek mij dat de verwijzingen op het class-path naar de ingepakte jars waren maar dat is dus niet mogelijk.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
bvp schreef op woensdag 11 januari 2006 @ 15:13:
Het leek mij dat de verwijzingen op het class-path naar de ingepakte jars waren maar dat is dus niet mogelijk.
Confusion tx, ik laat ze er wel gewoon buiten.

desnoods kan ik met jsmooth nog een exe maken :P (van dirty gesproken)
daar kan je d8 ik nog 3rd party libs meenemen.

Edit:
Toch maar ff geprobeerd om alles in 1 file te doen, valt nog best mee.
alle 3rd party libs uitpakken en op package-niveau kopieren,
JAR'en en doet het...

nu is mijn JAR-app wel van 90KB naar 1699KB gegaan

[ Voor 23% gewijzigd door Verwijderd op 11-01-2006 16:41 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Update:
na wat verdere test blijkt het idd niet zo verstandig om de libs te includen in één JAR.
ik heb een aantal verschillende libs (JDBC, MP3 & OGG) deze zullen in de toekomst nog uitgebreid worden, maar met deze paar had ik onderling al conflicten.
Pagina: 1