[Android] NoClassDefFoundErr bij refereren naar Java project

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • JoostTheHost
  • Registratie: Maart 2006
  • Laatst online: 16-09 10:27
De situatie
In Eclipse heb ik de volgende projecten:
  1. JavaProject1, met diverse *.jar libraries
  2. JavaProject2, met diverse *.jar libraries
  3. AndroidProject (min SDK 8, target SDK 19)
Verder maakt JavaProject1 gebruik van JavaProject2; dit project staan daarom op het build path van JavaProject1.
Nu wil ik wil JavaProject1 in mijn AndroidProject gebruiken. Ik heb daarom JavaProject1 op het build path van mijn AndroidProject gezet.

Ik gebruik Eclipse Kepler 4.3 en de Android SDK is volledig up to date. Verder staat de compiler voor alle projecten in Eclipse ingesteld op Java 6 (1.6).

Het probleem
De source geeft geen errors, echter krijg ik bij het runnen, op het moment dat JavaProject1 wordt aangeroepen telkens NoClassDefFoundError's.
Via Google vond ik dat instelingen met het build Path van de projecten het probleem kan verhelpen, en ik heb diverse configuraties met het build path e.d. geprobeerd. Uiteindelijk krijg ik e.e.a. maar niet aan de praat, terwijl het in mijn ogen mogelijk moet zijn. Wie kan me verder helpen? :)

Er bestaan geen (vergelijkbare) Android libraries van de JavaProjecten, dus het gebruik van deze java projecten is mijn enige optie.

Acties:
  • 0 Henk 'm!

  • steveman
  • Registratie: Mei 2001
  • Laatst online: 11:51

steveman

Comfortabel ten onder

Twee dingen die ik in het verleden heb gehad hiermee:

-folder met jars moet "libs" heten kennelijk en niet "lib" (Iets met een Ant build conventie...)
-ipv java build path bij project>properties>Android>Reference instellen (Daar kun je ook aanvinken dat je projectje een library project is, alleen dat soort projecten verschijnen in het lijstje)

Even getest met een JSoup-dependency:

-Project met de jar (in "libs") toegevoegd via java build path>projects:

02-21 20:52:09.650: E/AndroidRuntime(6323): Caused by: java.lang.NoClassDefFoundError: Class "Lorg/jsoup/Jsoup;" not found

Daarna van het project met de jar aangegeven dat het een library is, en middels het project>...>Android de reference geset: "Hello World!"

Dit dus:
Afbeeldingslocatie: http://i.imgur.com/L5AaFHB.png

[ Voor 39% gewijzigd door steveman op 21-02-2014 20:56 ]

"Take the risk of thinking for yourself. Much more happiness, truth, beauty, and wisdom will come to you that way." -Christopher Hitchens | In memoriam? 🏁 ipv kruis!


Acties:
  • 0 Henk 'm!

  • JoostTheHost
  • Registratie: Maart 2006
  • Laatst online: 16-09 10:27
steveman schreef op vrijdag 21 februari 2014 @ 20:43:
-folder met jars moet "libs" heten kennelijk en niet "lib" (Iets met een Ant build conventie...)
Snelle check leert dat de folder met jars momenteel 'lib' heet. Ik ben nu helaas niet thuis, dus kan e.e.a. niet opnieuw builden, maar ik zal dit morgenavond (zondagavond) veranderen in 'libs' en de resultaten hier posten.

-ipv java build path bij project>properties>Android>Reference instellen (Daar kun je ook aanvinken dat je projectje een library project is, alleen dat soort projecten verschijnen in het lijstje)
Bij puur Java-based projecten bestaat er onder 'project > properties' niet de optie 'Android'?
Verkeerd begrepen, ik had de afbeelding niet goed bekeken. Ik zal morgenavond ook even checken of deze instelling verschil maakt :)

P.s.: vergeten te vermelden in mijn eerste post, maar de beide Java-based projecten zijn Maven projecten, geimporteerd in Eclipse m.b.v. de Eclipse plugin m2e. Zou dit nog van invloed kunnen zijn op de hele situatie?

[ Voor 6% gewijzigd door JoostTheHost op 22-02-2014 20:53 ]


Acties:
  • 0 Henk 'm!

  • SPee
  • Registratie: Oktober 2001
  • Laatst online: 10:47
Controleer wat je projecten 1 en 2 exporteren.
Worden de jars wel beschikbaar gesteld aan andere projecten.
Properties -> Java build path -> tab export
Wat aangevinkt staat is door andere projecten te gebruiken.

let the past be the past.


Acties:
  • 0 Henk 'm!

  • JoostTheHost
  • Registratie: Maart 2006
  • Laatst online: 16-09 10:27
- in alle projecten heten de folders met .jars nu 'libs'
- in JavaProject1 en 2 gecheckt of all benodigdheden (jars e.d.) ook daadwerkelijk werden geexporteerd

Wanneer ik nu probeer de app te starten (uploaden naar emulator e.d.), krijg ik een Dalvik conversion error:

code:
1
2
3
...
[2014-02-23 19:37:41 - TestApp] Dx 1 error; aborting
[2014-02-23 19:37:41 - TestApp] Conversion to Dalvik format failed with error 1


Google leerde mij dat dit meestal wordt veroorzaakt door een dubbele vermelding naar een *.jar, dus ik heb de projecten gecheckt op dubbele vermeldingen, en alles gecleaned & opnieuw gebuild. De error blijft echter verschijnen..

------
edit:
het Java-based project dat ik in mijn Android app wil gebruiken blijkt uiteindelijk diverse Java packages te gebruiken die niet in Android zitten.. Dit wordt een oneindig gedoe, dus ik ga het op een volledig andere wijze aanpakken.

[ Voor 31% gewijzigd door JoostTheHost op 20-03-2014 14:35 ]