2017-05-31 5 views
0

Ich aktualisiere ein Projekt von Grails 1.3.7 zu 3.2.6. Ich habe Klassen, die Dinge wie IMAPFolder und IMAPProtocol importieren. Ich glaube, das erfordert, dass ich com.sun.mail: imap als Kompilierzeitabhängigkeit einbeziehe. Ich habe dies in meinem build.gradle:Wie löst man NoClassDefFoundError in Grails Compile?

compile group: 'com.sun.mail', name: 'imap', version: '1.5.6' 

Allerdings, wenn ich die hinzufügen und versuchen, zu kompilieren, ich einen Java-Kompilierung-Fehler erhalten.

General error during conversion: java.lang.NoClassDefFoundError: com/sun/mail/util/ReadableMime 

java.lang.RuntimeException: java.lang.NoClassDefFoundError: com/sun/mail/util/ReadableMime 
     at org.codehaus.groovy.control.CompilationUnit.convertUncaughtExceptionToCompilationError(CompilationUnit.java:1089) 
     at org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(CompilationUnit.java:1067) 
     at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:591) 
     at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:569) 
     at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:546) 
     at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:525) 
     at org.gradle.api.internal.tasks.compile.ApiGroovyCompiler.execute(ApiGroovyCompiler.java:173) 
     at org.gradle.api.internal.tasks.compile.ApiGroovyCompiler.execute(ApiGroovyCompiler.java:59) 
     at org.gradle.api.internal.tasks.compile.daemon.CompilerDaemonServer.execute(CompilerDaemonServer.java:31) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:498) 
     at org.gradle.process.internal.worker.request.WorkerAction.run(WorkerAction.java:87) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:498) 
     at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35) 
     at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) 
     at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:377) 
     at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54) 
     at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
     at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.NoClassDefFoundError: com/sun/mail/util/ReadableMime 
     at java.lang.ClassLoader.defineClass1(Native Method) 
     at java.lang.ClassLoader.defineClass(ClassLoader.java:763) 
     at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
     at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) 
     at java.net.URLClassLoader.access$100(URLClassLoader.java:73) 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:368) 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:362) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:361) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:411) 
     at groovy.lang.GroovyClassLoader.loadClass(GroovyClassLoader.java:677) 
     at groovy.lang.GroovyClassLoader.loadClass(GroovyClassLoader.java:545) 
     at org.codehaus.groovy.control.ClassNodeResolver.tryAsLoaderClassOrScript(ClassNodeResolver.java:185) 
     at org.codehaus.groovy.control.ClassNodeResolver.findClassNode(ClassNodeResolver.java:170) 
     at org.codehaus.groovy.control.ClassNodeResolver.resolveName(ClassNodeResolver.java:126) 
     at org.codehaus.groovy.control.ResolveVisitor.resolveToOuter(ResolveVisitor.java:676) 
     at org.codehaus.groovy.control.ResolveVisitor.resolve(ResolveVisitor.java:308) 
     at org.codehaus.groovy.control.ResolveVisitor.visitClass(ResolveVisitor.java:1218) 
     at org.codehaus.groovy.control.ResolveVisitor.startResolving(ResolveVisitor.java:176) 
     at org.codehaus.groovy.tools.javac.JavaAwareCompilationUnit$1.call(JavaAwareCompilationUnit.java:71) 
     at org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(CompilationUnit.java:1053) 
    ... 24 more Caused by: java.lang.ClassNotFoundException: com.sun.mail.util.ReadableMime 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    ... 46 more

Wie komme ich daran vorbei? Die IMAP-Bibliothek zeigt keine anderen Kompilierabhängigkeiten an, daher bin ich mir nicht sicher, was ich tun soll.

Antwort

0

IMAPFolder und IMAPProtocol sind Teile von JavaMail API.

sollten Sie fügen

compile group: 'javax.mail', name: 'mail', version: '1.4.7' 

statt

compile group: 'com.sun.mail', name: 'imap', version: '1.5.6' 

Wahrscheinlich benötigen Sie eine andere Version see here

0

Danke für die Anregung. Ich hatte eine Abhängigkeit für javax.mail drin, aber eine höhere Version.

Ich habe gerade dieses Problem heute früh gelöst. Es stellte sich heraus, dass ich javax.mail Version 1.4.3 (oder so ähnlich, aber mindestens 1.4.3) benötigt und das Sun imap 1.4.3 jar. Gradle schaffte es nicht, das imap-1.4.3.jar von irgendwoher zu ziehen, also lud ich es lokal herunter und es war endlich glücklich.

Also der Vorschlag, javax.mail und den Vorschlag einer anderen Version zu haben, waren beide genau richtig.

compile files('lib/imap-1.4.3.jar') 
compile group: 'javax.mail', name: 'mail', version: '1.4.3' 
Verwandte Themen