2017-05-31 9 views
0

プロジェクトをGrails 1.3.7から3.2.6にアップグレードしています。 IMAPFolderやIMAPProtocolといったものをインポートするクラスがあります。コンパイル時の依存関係としてcom.sun.mail:imapを含める必要があると私は信じています。私は私のbuild.gradleでこれを持っている:GrailsコンパイルでNoClassDefFoundErrorを解決するには?

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

しかし、私はそれを追加してコンパイルしようとしたとき、私はJavaコンパイルエラーが発生します。

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

どのようにしてこれを取得できますか? imapライブラリは他のコンパイルの依存関係を表示しないので、何をすべきか分かりません。

答えて

0

IMAPFolderおよびIMAPProtocolは、JavaMail APIの一部です。

あなたが代わりに

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

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

を追加する必要がありますおそらくあなたは提案をsee here

0

おかげで、別のバージョンが必要です。私はそこにあるjavax.mailに依存していましたが、より高いバージョンです。

私は実際にこの問題を今朝早く解決しました。 javax.mailバージョン1.4.3(またはその近辺では少なくとも1.4.3が動作しました)とSun imap 1.4.3 jarが必要でした。 Gradleはどこからでもimap-1.4.3.jarを引き出せなかったので、私はそれをローカルにダウンロードしました。そして、ついにそれは幸せでした。

したがって、javax.mailを持つことの提案と異なるバージョンの提案はどちらも注目に値します。

compile files('lib/imap-1.4.3.jar') 
compile group: 'javax.mail', name: 'mail', version: '1.4.3' 
関連する問題