2011-07-13 6 views
1

Je reçois une erreur Java.Lang.NoClassDefFoundError lors de la création d'une intention d'une classe personnalisée (une activité). Selon this tutorial cela signifie que la classe n'est pas trouvée au moment de l'exécution. Il est certainement trouvé au moment de la conception lorsque le projet se compile avec succès. J'ai essayé de définir manuellement le chemin des assemblys sur Project -> Properties -> Reference Paths mais l'erreur ne disparaît pas. J'ai essayé avec un projet plus simple avec une activité personnalisée sur le même fichier que l'activité parente et fonctionne bien. Où dois-je définir Java ClassPath dans Mono pour Android ou que faire pour résoudre ce problème?Comment faire pour définir Java ClassPath dans Monodroid

Merci d'avance.

Répondre

1

Ce n'est pas un problème de chemin de classe. Vous devez ajouter la classe à votre fichier manifeste, par exemple:

<activity android:name="yourpackage.YourClass" android:label="@string/your_title" /> 

Barry

+0

Si je place cela entre tags je ne peux même pas démarrer l'application. Si je le place ailleurs dans le manifeste, j'obtiens la même erreur NoClassDefFoundError. –

+0

Vous devez avoir fait une petite erreur dans votre balise car ajouter une activité à votre manifeste (correctement) ne devrait jamais poser de problème. Postez le tag que vous avez utilisé, et l'exception que vous obtenez au démarrage. –

+1

Merci Barry. Depuis Xamarin a de nouveau le contrôle sur Mono pour Android cette semaine, j'ai apporté le problème à la liste de diffusion officielle: http://mono-for-android.1047100.n5.nabble.com/Unable-to-find-library-td4611576. html Il semble que ce pourrait être un bug Monodroid, ils l'étudient. –

1

On dirait que vous n'êtes pas inscrit votre activité avec le manifeste. Vous pouvez le faire manuellement, mais la meilleure approche est de décorer votre classe d'activité avec ActivityAttribute, comme ceci:

[Activity(Label = "Activity Label", MainLauncher = true)] 
public class CustomActivity : Activity 

Une fois que vous faites cela, l'entrée manifeste sera généré pour vous.

+0

Je l'avais fait sans l'attribut MainLauncher car mon activité est utilisée dans un ActivityGroup. Cela n'aide pas non plus. –