【问题标题】:Groovy @Grab generating java.lang.NoClassDefFoundErrorGroovy @Grab 生成 java.lang.NoClassDefFoundError
【发布时间】:2016-08-02 22:32:50
【问题描述】:

我正在尝试让 Jsoup 与 Gaelyk 一起参与我的 Google App Engine 实验项目。我在日常工作中使用 Grails,所以认为开始使用 Gaelyk 会是小菜一碟……没那么快……

当我包含以下内容时发生错误:

@Grab('org.jsoup:jsoup:1.9.2')

项目构建。但是,访问我正在执行 HTML 抓取的页面时出现此错误:

HTTP 错误 500

访问/.时出现问题

Reason: org/apache/ivy/core/report/ResolveReport
Caused by: java.lang.NoClassDefFoundError:   org/apache/ivy/core/report/ResolveReport 
Caused by: java.lang.ClassNotFoundException: org.apache.ivy.core.report.ResolveReport
Caused by: java.lang.ClassNotFoundExeption:  org.apache.ivy.core.report.ResolveReport

没有太多运气更新我与 Glide 一起使用的 build.gradle 文件来构建项目....任何想法将不胜感激!

【问题讨论】:

  • 我不认为@Grab 与 App Engine 兼容,因为它具有一些顽皮的 ClassLoader 魔法。将依赖项添加到 build.gradle 文件是要走的路。你能分享你的 build.gradle 吗?
  • 我同意@Grab。我像下面建议的答案一样删除了它!谢谢!

标签: google-app-engine groovy jsoup gaelyk


【解决方案1】:

正如您提到的,您使用的是 glide,请将其放入您的 build.gradle 文件中:

plugins {
    id "com.appspot.glide-gae" version "0.9.3"
}

dependencies {
    compile "org.jsoup:jsoup:1.9.2" 
}

在您的 Groovlet 中,您只需要:

import org.jsoup.*

def doc = Jsoup.connect("http://<your-url-here>").get()

你又回来了

更新:我在 glide-samples 中添加了一个示例 Scraper

【讨论】:

  • 谢谢!那成功了。我删除了@Grab 并更新了 build.gradle,它成功了!我盯着这个看了这么久,把我逼疯了!
猜你喜欢
  • 1970-01-01
  • 2012-11-07
  • 1970-01-01
  • 1970-01-01
  • 2013-09-22
  • 2013-08-12
  • 2023-04-02
  • 1970-01-01
  • 2010-11-20
相关资源
最近更新 更多