外部JARからライブラリを使用しようとしたときにGrails 2.0でNoClassDefFound例外に関する問題が発生しました。Grails 2.0 depedencies NoClassDefFound問題
私は、宣言されたJARが作成されたWARの内側にあることを確認しました。また、grials dependecies-reportはその問題を示していません。
ローカルに追加されたJARまたはMavenレポからダウンロードされたものは違いがありません。私はIVYキャッシュをきれいにしてgrailsプロジェクトをクリーンアップしようとしました。
修正方法はありますか?
BuildConfig.groovy(の一部)
grails.project.dependency.resolution = {
inherits("global") {
// uncomment to disable ehcache
// excludes 'ehcache'
}
log "error" // log level of Ivy resolver, either 'error', 'warn', 'info', 'debug' or 'verbose'
checksums true // Whether to verify checksums on resolve
repositories {
inherits true // Whether to inherit repository definitions from plugins
grailsPlugins()
grailsHome()
grailsCentral()
mavenCentral()
mavenLocal()
mavenRepo "http://snapshots.repository.codehaus.org"
mavenRepo "http://repository.codehaus.org"
mavenRepo "http://download.java.net/maven/2/"
mavenRepo "http://repository.jboss.com/maven2/"
}
dependencies {
compile ( "javax:activation:1.0",
"javax:mail:1.0",
"com.google.gdata:gdata-core:1.0",
"com.google.gdata:gdata-client:1.0",
"com.google.gdata:gdata-media:1.0",
"com.google.gdata:gdata-youtube:2.0"
)
runtime ( "javax:activation:1.0",
"javax:mail:1.0",
"com.google.gdata:gdata-core:1.0",
"com.google.gdata:gdata-client:1.0",
"com.google.gdata:gdata-media:1.0",
"com.google.gdata:gdata-youtube:2.0"
)
}
...
}
LibraryController.groovy
import com.google.gdata.client.youtube.YouTubeService
import com.google.gdata.data.youtube.VideoEntry
import com.google.gdata.util.ServiceException
class LibraryController {
private YouTubeService service
private static final API_URL = "http://gdata.youtube.com/feeds/api/videos/"
def index = {
service = new YouTubeService("app")
}
}
例外
Class
java.lang.NoClassDefFoundError
Message
Could not initialize class com.google.gdata.client.youtube.YouTubeServiceClass
java.lang.NoClassDefFoundError
メッセージ はあなたがすべてのあなたの依存関係がコンパイルおよび実行時のスコープの両方を宣言したクラスcom.google.gdata.client.youtube.YouTubeService
など、あなたがロードに失敗していますクラスのすべての依存関係、およびその依存関係のすべてを持っていることを確認する必要がありますWARファイル内に、クラスファイルYouTubeServiceClassが含まれていることを二重に確認します。 –
いつこのエラーが発生しますか?実行時に 'run-app'を使用していますか? – Chris
はい、実行アプリを使用していますが、ライブラリビューに入るときに例外が表示されます。 – Simek