J'ai une application client android webservice. J'essaie d'utiliser le support de bibliothèque WS standard Java. J'ai dépouillé l'application au minimum, comme indiqué ci-dessous, pour essayer d'isoler le problème. Ci-dessous l'application,Android "java.lang.noclassdeffounderror" exception
package fau.edu.cse;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class ClassMap extends Activity {
TextView displayObject;
@Override
public void onCreate(Bundle savedInstanceState) {
// Build Screen Display String
String screenString = "Program Started\n\n";
// Set up the display
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
displayObject = (TextView)findViewById(R.id.TextView01);
screenString = screenString + "Inflate Disaplay\n\n";
try {
// Set up Soap Service
TempConvertSoap service = new TempConvert().getTempConvertSoap();
// Successful Soap Object Build
screenString = screenString + "SOAP Object Correctly Build\n\n";
// Display Response
displayObject.setText(screenString);
}
catch(Throwable e){
e.printStackTrace();
displayObject.setText(screenString +"Try Error...\n" + e.toString());
}
}
}
Les classes tempConvert et tempConvertSoap sont dans le paquet fau.edu.cse. J'ai inclus les bibliothèques java SE javax dans java build pasth. Lorsque l'application android essaie de créer l'objet "service", j'obtiens une exception "java.lang.noclassdeffounderror". Les deux classes tempConvertSoap et TempConvet() sont générées par wsimport. J'utilise également plusieurs bibliothèques de javax.jws .. et javax.xml.ws .. Bien sûr, l'application compile sans erreur et se charge correctement. Je sais que l'application fonctionne parce que ma routine "try/catch" réussit à attraper l'erreur et à l'imprimer. Voici ce qui est dans le logcat dit (avis qu'il ne peut pas trouver TempConvert),
06-12 22:58:39.340: WARN/dalvikvm(200): Unable to resolve superclass of Lfau/edu/cse/TempConvert; (53)
06-12 22:58:39.340: WARN/dalvikvm(200): Link of class 'Lfau/edu/cse/TempConvert;' failed
06-12 22:58:39.340: ERROR/dalvikvm(200): Could not find class 'fau.edu.cse.TempConvert', referenced from method fau.edu.cse.ClassMap.onCreate
06-12 22:58:39.340: WARN/dalvikvm(200): VFY: unable to resolve new-instance 21 (Lfau/edu/cse/TempConvert;) in Lfau/edu/cse/ClassMap;
06-12 22:58:39.340: DEBUG/dalvikvm(200): VFY: replacing opcode 0x22 at 0x0027
06-12 22:58:39.340: DEBUG/dalvikvm(200): Making a copy of Lfau/edu/cse/ClassMap;.onCreate code (252 bytes)
06-12 22:58:39.490: DEBUG/dalvikvm(30): GC freed 2 objects/48 bytes in 273ms
06-12 22:58:39.530: DEBUG/ddm-heap(119): Got feature list request
06-12 22:58:39.620: WARN/Resources(200): Converting to string: TypedValue{t=0x12/d=0x0 a=2 r=0x7f050000}
06-12 22:58:39.620: WARN/System.err(200): java.lang.NoClassDefFoundError: fau.edu.cse.TempConvert
06-12 22:58:39.830: WARN/System.err(200): at fau.edu.cse.ClassMap.onCreate(ClassMap.java:26)
06-12 22:58:39.830: WARN/System.err(200): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
06-12 22:58:39.830: WARN/System.err(200): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
06-12 22:58:39.830: WARN/System.err(200): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
06-12 22:58:39.830: WARN/System.err(200): at android.app.ActivityThread.access$2200(ActivityThread.java:119)
06-12 22:58:39.880: WARN/System.err(200): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
06-12 22:58:39.880: WARN/System.err(200): at android.os.Handler.dispatchMessage(Handler.java:99)
06-12 22:58:39.880: WARN/System.err(200): at android.os.Looper.loop(Looper.java:123)
06-12 22:58:39.880: WARN/System.err(200): at android.app.ActivityThread.main(ActivityThread.java:4363)
06-12 22:58:39.880: WARN/System.err(200): at java.lang.reflect.Method.invokeNative(Native Method)
06-12 22:58:39.880: WARN/System.err(200): at java.lang.reflect.Method.invoke(Method.java:521)
06-12 22:58:39.880: WARN/System.err(200): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
06-12 22:58:39.880: WARN/System.err(200): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
06-12 22:58:39.880: WARN/System.err(200): at dalvik.system.NativeStart.main(Native Method)
... Bla ... Bla ... bla
Ce serait formidable si quelqu'un vient d'avoir une réponse , cependant je regarde les stratégies de débogage. J'ai pris cette même application et créé une application client Java standard et cela fonctionne bien - bien sûr, avec tous les trucs Android enlevés. Quelle serait une bonne stratégie de débogage? Quelles méthodes et techniques recommanderiez-vous d'essayer d'isoler le problème? Je pense qu'il y a une sorte d'incompatibilité de Dalvik VM qui provoque le chargement de la classe TempConvert. TempConvert est une classe d'interface qui fait référence à de nombreux attributs de service Web très complexes. Toute aide avec les stratégies de débogage serait volontiers appréciée.
Merci pour l'aide, Steve
vous devez avoir les pots sur vos serveurs Web de dossier lib – Woot4Moo