[eclipse] Jar file werkt overal maar niet in Eclipse

Pagina: 1
Acties:

  • Red devil
  • Registratie: December 1999
  • Laatst online: 21:40
Eclipse, het kan zo nu en dan aardig je weekend verpesten.
Ik hoop dat jullie mij verder kunnen helpen met het volgende probleem:

Onder Eclipse hebben we een Rich Client Platforum gebouwd. Deze ge-export naar een product, werkt allemaal aardig. Totdat ik erachter kwam dat een bepaalde functionaliteit absoluut niet meer wilde werken. Het is een routine die met een website babbelt en dan via SOAP data overstuurt. Onlangs hebben de makers van de servers waar je mee babbelt de boel geupdate, en dat je daarom zelf ook wat libraries moet aanpassen.

Het gaat misschien ver om de functie te beschrijven, maar voor de liefhebbers, het gaat om de KeggApi tezamen met de Apache Jar axis-1.2.1.

Na veel gepruts en geklooi heb ik voor de grap eens gekeken of ik uberhaupt het geheel aan de praat kon krijgen. Zo gezegd zo gedaan, nieuw project aangemaakt, de betreffende jars erin. Simpel voorbeeldje gepaste.... Run.... voila het werkt.
Toen dacht ik, ik ben gek, ik maak gewoon van dit hele functionaleit 1 dikke Jar en gebruik die voortaan. Hup, dikke Jar file gemaakt met 1 simpele klasse die een main heeft + 1 methode.

Als ik deze Jar file vanuit windows rechtstreeks aanroep met java -jar jarFile.jar --> dan werkt het prima, geen probleem.

Echter, terug in mijn RCP.. JAR file in project gegooid, project properties + plugin.XML aangepast.... ik initialiseer de klasse in de Jar file ... dat gaat goed... ik roep de enige methode aan die dat ding heeft.... , gaat nog goed, althans. Als ik het RUN, dan zie ik dat hij in de methode komt... en dan doet hij verder helemaal niks nadda noppes.

Als ik een nieuw klein programmaatje (geen RCP) maak die de dikke JAR file include en niks anders doet dan de klasse in de jar initialiseren en de methode aanroepen (met exact dezelfde parameters als hiervoor)... dan werkt het weer wel!

Dus de JAR file in Eclipse werkt niet... en in een klein simpel programmaatje weer wel! Sorry, snappen jullie het nog?

  • momania
  • Registratie: Mei 2000
  • Laatst online: 23:39

momania

iPhone 30! Bam!

Komt dat niet omdat je nu gelijke libs, alleen andere versies, toevoegd ipv wijzigd?

En door het toevoegen de nieuwe versie achter aan in je classpath/libpath staan en dus niet gebruikt worden? Vandaar dat het met losse tests waarschijnlijk wel werkt.
Probeer iig even in eclipse de volgorde van je libs aan te passen, misschien helpt het :)

[ Voor 10% gewijzigd door momania op 14-08-2005 15:08 ]

Neem je whisky mee, is het te weinig... *zucht*


  • Red devil
  • Registratie: December 1999
  • Laatst online: 21:40
momania schreef op zondag 14 augustus 2005 @ 15:07:
Komt dat niet omdat je nu gelijke libs, alleen andere versies, toevoegd ipv wijzigd?

En door het toevoegen de nieuwe versie achter aan in je classpath/libpath staan en dus niet gebruikt worden? Vandaar dat het met losse tests waarschijnlijk wel werkt.
Probeer iig even in eclipse de volgorde van je libs aan te passen, misschien helpt het :)
Goed punt, dat was ik nog vergeten in mijn post te zetten. De JAR files die normaliter los in mijn project stonden heb ik uit de plugin.xml, project properties + fysiek uit de directory gehaald.

Maar een klasse in een JAR file kan toch alleen maar gebruik maken van de classes/jars die in dezelfde JAR zitten?

Dus voor de duidelijkheid, voorheen had ik de circa 8 losse jar files los in mijn project staan en communiceerde ik direct met ze. Nu heb ik de content van deze 8 losse jar files in 1 dikke jar file gestopt en communiceert mijn programma met deze dikke jar file.

  • zwippie
  • Registratie: Mei 2003
  • Niet online

zwippie

Electrons at work

Maar een klasse in een JAR file kan toch alleen maar gebruik maken van de classes/jars die in dezelfde JAR zitten?
Dit lijkt me onjuist. Je kunt altijd een klasse laden die niet in dezelfde jar zit, zolang deze te laden klasse maar in je classpath staat.

Staan er in de losse jars die je hebt samengevoegd ook manifest bestanden? Misschien moet je die er nog bij betrekken.

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.


  • momania
  • Registratie: Mei 2000
  • Laatst online: 23:39

momania

iPhone 30! Bam!

Je krijgt verder geen exceptions oid :? Het werkt 'gewoon' niet?

Jouw RCP gebruikt geen libs die de KeggApi ook nodig heeft en dat jouw RCP nu niet met nieuwere versies van die libs werkt :?

Mij grootste vermoeden blijft nog steeds dat je in z'n geheel (RCP + libs etc) dubbele classes in je path hebt en het daar ergens mis gaat.

Neem je whisky mee, is het te weinig... *zucht*


  • Red devil
  • Registratie: December 1999
  • Laatst online: 21:40
zwippie schreef op zondag 14 augustus 2005 @ 15:26:
[...]

Dit lijkt me onjuist. Je kunt altijd een klasse laden die niet in dezelfde jar zit, zolang deze te laden klasse maar in je classpath staat.

Staan er in de losse jars die je hebt samengevoegd ook manifest bestanden? Misschien moet je die er nog bij betrekken.
Zal ik even tjekke thanks.
momania schreef op zondag 14 augustus 2005 @ 15:26:
Je krijgt verder geen exceptions oid :? Het werkt 'gewoon' niet?

Jouw RCP gebruikt geen libs die de KeggApi ook nodig heeft en dat jouw RCP nu niet met nieuwere versies van die libs werkt :?

Mij grootste vermoeden blijft nog steeds dat je in z'n geheel (RCP + libs etc) dubbele classes in je path hebt en het daar ergens mis gaat.
Ik ben ook bang dat het daar ergens mis gaat.


OK. Heb nu de code uit die ene klasse uit de dikke JAR gehaald en in de RCP gegooid. Dus in plaats van de klasse in de dikke JAR te initialiseren, gebruik ik domweg nu zijn code.
Resultaat? Hetzelfde, blijft gewoon hangen. Doet niks, geen errors etc etc.
Ik zal nu wederom op jacht naar dubbele classes.

[edit]

Doet niks --> is dat het resultaat, een array met objecten, wat de methode zou moeten opleveren als NULL wordt gereturneerd.

[ Voor 7% gewijzigd door Red devil op 14-08-2005 15:41 ]


  • momania
  • Registratie: Mei 2000
  • Laatst online: 23:39

momania

iPhone 30! Bam!

Ik vind het wel raar dat je geen errors, helemaal niks krijgt. Je hebt toch wel debug logging etc ingebouwd?

Ook moet je volgens mij in eclipse toch mooi kunnen zien wat je precies allemaal aan libs mist, als je je libs eens allemaal weg gooit. Je kan ze dan even stuk voor stuk toevoegen (en dan natuurlijk even proberen met de laatste versies die je bij KeggApi krijgt). Als je dan geen errors als missende libs krijgt, dan zou je compleet moeten zijn.

Probeer trouwens ook juist niet alles in 1 grote jar te proppen. Zo verlies je overzicht van welke libs je nou werkelijk allemaal gebruikt en eventueel de versies daarvan.

Ik zie liever in m'n classpath zoiets staan:
commons_lang-2.0.jar;commons_math-1.3.jar;commons_logging-1.4.jar;etc
dan dat alles samengevoegd is in:
commons_lang.jar

Neem je whisky mee, is het te weinig... *zucht*


  • Red devil
  • Registratie: December 1999
  • Laatst online: 21:40
momania schreef op zondag 14 augustus 2005 @ 15:43:
Ik vind het wel raar dat je geen errors, helemaal niks krijgt. Je hebt toch wel debug logging etc ingebouwd?
Heb net de boel nog gedebugged, het is niet echt een fout wat ik krijg, het is gewoon dat de methode die normaliter perfect werkt, nu NULL terug geeft...
Ook moet je volgens mij in eclipse toch mooi kunnen zien wat je precies allemaal aan libs mist, als je je libs eens allemaal weg gooit. Je kan ze dan even stuk voor stuk toevoegen (en dan natuurlijk even proberen met de laatste versies die je bij KeggApi krijgt). Als je dan geen errors als missende libs krijgt, dan zou je compleet moeten zijn.
Inmiddels is mijn programma een grote brei aan jars ontstaan, daar ga ik nu dingen uit halen om te kijken wat er precies nodig is..
Probeer trouwens ook juist niet alles in 1 grote jar te proppen. Zo verlies je overzicht van welke libs je nou werkelijk allemaal gebruikt en eventueel de versies daarvan.
Ben er zelf ook geen fan van, maar na een dag lang troubleshooten wilde ik het gewoon proberen , ik wist het echt niet meer...

  • momania
  • Registratie: Mei 2000
  • Laatst online: 23:39

momania

iPhone 30! Bam!

Red devil schreef op zondag 14 augustus 2005 @ 15:48:
[...]
Inmiddels is mijn programma een grote brei aan jars ontstaan, daar ga ik nu dingen uit halen om te kijken wat er precies nodig is..
[...]
Ben er zelf ook geen fan van, maar na een dag lang troubleshooten wilde ik het gewoon proberen , ik wist het echt niet meer...
Dat is idd de beste stap vaak. Gewoon alle afhankelijkheden stap voor stap toevoegen. En met losse jar's kan je dan ook nog eens makkelijker van versie wisselen.

Ik weet niet hoe je logging is ingericht, maar komt er ook geen logging uit de libs die je gebruikt?

En heb je geen stub voor de de servers die je aanroept, zodat je stand-alone wel de nieuwe interfaces van ze kan testen :?

Neem je whisky mee, is het te weinig... *zucht*


  • zwippie
  • Registratie: Mei 2003
  • Niet online

zwippie

Electrons at work

Vergeet ook niet om even in java_install_dir/ext/lib te kijken wat hier al aan libraries staat.
Testen op een andere 'cleane' computer kan misschien ook meer duidelijkheid geven.

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.


  • Red devil
  • Registratie: December 1999
  • Laatst online: 21:40
Heb nu het program niet werkend zonder de dikke jar. Klinkt raar, maar ik had voor de dikke jar alleen maar hele vage foutmeldingen. Nu schijnt het wel half te werken en krijg ik dezelfde resultaten als met de dikke jar.. dus NULL geretourneerd..

Ik ga nu alle jars eruit gooien en dan kijken welke nodig zijn.

  • Red devil
  • Registratie: December 1999
  • Laatst online: 21:40
VICTORY!

Heb alle JARS eruit gemikt, vervolgens het programma proberen op te starten (heerlijk dat Eclipse wil starten zelfs met 100000 compileer fouten). Telkens een JAR toegevoegd indien nodig..
toen draaide het programma, vlug de JARS van het probleem erbij in en draaien maar... dat werkt nu!

Yes! Nu nog een kwestie van alle JARS erbij in te gooien en de boosdoener op te pakken en een enkeltje Recycle Bin te geven.

Thanks guys!
Pagina: 1