2014-10-01 71 views
0

我在Android项目中使用JavaCV来操纵一些图像。 我使用JavaCV的本地库成功创建了纯Java项目,该应用程序正常工作。 后来我想尝试端口项目常规的Android:Groovy for Android与JavaCV导致NoClassDefFoundError

java.lang.NoClassDefFoundError: java/awt/image/BufferedImage at java.lang.Class.getDeclaredMethods(Native Method) at java.lang.Class.getDeclaredMethods(Class.java:703) at org.codehaus.groovy.reflection.stdclasses.CachedSAMClass$1.run(CachedSAMClass.java:100) at org.codehaus.groovy.reflection.stdclasses.CachedSAMClass$1.run(CachedSAMClass.java:98) at java.security.AccessController.doPrivileged(AccessController.java:45) at org.codehaus.groovy.reflection.stdclasses.CachedSAMClass.getDeclaredMethods(CachedSAMClass.java:98) at org.codehaus.groovy.reflection.stdclasses.CachedSAMClass.getAbstractMethods(CachedSAMClass.java:116) at org.codehaus.groovy.reflection.stdclasses.CachedSAMClass.getSAMMethod(CachedSAMClass.java:182) at org.codehaus.groovy.reflection.ClassInfo.isSAM(ClassInfo.java:344) at org.codehaus.groovy.reflection.ClassInfo.createCachedClass(ClassInfo.java:334) at org.codehaus.groovy.reflection.ClassInfo.access$700(ClassInfo.java:38) at org.codehaus.groovy.reflection.ClassInfo$LazyCachedClassRef.initValue(ClassInfo.java:482) at org.codehaus.groovy.reflection.ClassInfo$LazyCachedClassRef.initValue(ClassInfo.java:473) at org.codehaus.groovy.util.LazyReference.getLocked(LazyReference.java:46) at org.codehaus.groovy.util.LazyReference.get(LazyReference.java:33) at org.codehaus.groovy.reflection.ClassInfo.getCachedClass(ClassInfo.java:108) at org.codehaus.groovy.reflection.ReflectionCache.getCachedClass(ReflectionCache.java:107) at org.codehaus.groovy.reflection.CachedClass$4.initValue(CachedClass.java:136) at org.codehaus.groovy.reflection.CachedClass$4.initValue(CachedClass.java:133) at org.codehaus.groovy.util.LazyReference.getLocked(LazyReference.java:46) at org.codehaus.groovy.util.LazyReference.get(LazyReference.java:33) at org.codehaus.groovy.reflection.CachedClass.getCachedSuperClass(CachedClass.java:243) at org.codehaus.groovy.reflection.CachedClass$8.initValue(CachedClass.java:209) at org.codehaus.groovy.reflection.CachedClass$8.initValue(CachedClass.java:195) at org.codehaus.groovy.util.LazyReference.getLocked(LazyReference.java:46) at org.codehaus.groovy.util.LazyReference.get(LazyReference.java:33) at org.codehaus.groovy.reflection.CachedClass.getInterfaces(CachedClass.java:247) at org.codehaus.groovy.reflection.CachedClass.(CachedClass.java:233) at org.codehaus.groovy.reflection.ClassInfo.createCachedClass(ClassInfo.java:337) at org.codehaus.groovy.reflection.ClassInfo.access$700(ClassInfo.java:38) at org.codehaus.groovy.reflection.ClassInfo$LazyCachedClassRef.initValue(ClassInfo.java:482) at org.codehaus.groovy.reflection.ClassInfo$LazyCachedClassRef.initValue(ClassInfo.java:473) at org.codehaus.groovy.util.LazyReference.getLocked(LazyReference.java:46) at org.codehaus.groovy.util.LazyReference.get(LazyReference.java:33) at org.codehaus.groovy.reflection.ClassInfo.getCachedClass(ClassInfo.java:108) at org.codehaus.groovy.reflection.ReflectionCache.getCachedClass(ReflectionCache.java:107) at org.codehaus.groovy.reflection.ParameterTypes.getParametersTypes0(ParameterTypes.java:78) at org.codehaus.groovy.reflection.ParameterTypes.getParameterTypes(ParameterTypes.java:64) at org.codehaus.groovy.reflection.CachedMethod.compareToCachedMethod(CachedMethod.java:154) at org.codehaus.groovy.reflection.CachedMethod.compareTo(CachedMethod.java:137) at java.util.ComparableTimSort.binarySort(ComparableTimSort.java:228) at java.util.ComparableTimSort.sort(ComparableTimSort.java:172) at java.util.ComparableTimSort.sort(ComparableTimSort.java:142) at java.util.Arrays.sort(Arrays.java:1973) at org.codehaus.groovy.reflection.CachedClass$3.initValue(CachedClass.java:117) at org.codehaus.groovy.reflection.CachedClass$3.initValue(CachedClass.java:79) at org.codehaus.groovy.util.LazyReference.getLocked(LazyReference.java:46) at org.codehaus.groovy.util.LazyReference.get(LazyReference.java:33) at org.codehaus.groovy.reflection.CachedClass.getMethods(CachedClass.java:255) at groovy.lang.MetaClassImpl.populateMet

下面是一个使用Javacv代码片段:

  FFmpegFrameRecorder recorder = new FFmpegFrameRecorder(outFile, width, height); 
      recorder.setVideoCodec(avcodec.AV_CODEC_ID_MPEG4); 
      recorder.setFormat("mp4"); 
      recorder.setFrameRate(frameRate); 
      recorder.setVideoQuality(videoQuality); 
      /* some non Javacv stuff */ 
        while(!finished) 
        { 
          opencv_core.IplImage image = cvLoadImage(picPath); 
          recorder.record(image); 
          opencv_core.cvReleaseImage(image); 
        } 

我知道Android没有与AWT一起发布,但就简单的Java项目而言,这不是问题。我只有在使用Groovy时才遇到这个问题。我只是花了整整一个早上试图弄清楚这一点,没有运气,也尝试通过产生的调试apk通过Proguard,但它只是使更多的困惑。 任何想法如何解决这个问题?

回答

相关问题