当前位置: 首页 > 知识库问答 >
问题:

包括Groovy中的本地JAR

楚泳
2023-03-14

我试图在我的简单Groovy脚本中使用“httpBuilder”。当我使用'@grab'导入依赖项时,一切都运行良好。但是,我希望将jar保存在一个不同的目录中,并使用classLoader函数导入它。我已经复制了“@grab”放在我的grapes目录中的“http-builder-0.7.jar”,并将其粘贴到我的Groovy脚本运行的同一目录中(在Windows上)。然后注释掉“@Grab”语句并包含类加载器,但得到以下错误:

org.codehaus.groovy.control.MultipleCompilationErrorsException:启动失败:C:\Groovy Scripts\test.groovy:9:无法解析类HTTPBuilder

//@Grab('org.codehaus.groovy.modules.http-builder:http-builder:0.7')

this.getClass().classLoader.rootLoader.addURL(new File("http-builder-0.7.jar").toURL())

//return new File(groovyx.net.http.HTTPBuilder.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath());

def http = new HTTPBuilder('http://httpbin.org/get')

共有1个答案

暴阳州
2023-03-14

如前所述,您最好使用另一种方法,比如Gradle的应用程序插件。

然而,这是你所要求的一种方法。

首先,要获得jar和所有依赖项,请考虑以下Gradlebuild.Gradle脚本:

apply plugin: 'java'

dependencies {
    compile 'org.codehaus.groovy.modules.http-builder:http-builder:0.7'
}

repositories { 
   jcenter()
}

clean {
    doLast {
        ant.delete(dir: 'runtime')
    }
}

task getDeps(type: Copy) {
    from sourceSets.main.runtimeClasspath
    into 'runtime/'

    doFirst {
        ant.delete(dir: 'runtime')
        ant.mkdir(dir: 'runtime')
    }
}
export CLASSPATH=.:"/user/foo/some/path/runtime/*"

在同一终端中,这将起作用:

import groovyx.net.http.*

def http = new HTTPBuilder('http://httpbin.org/get')

println "Ready."
 类似资料:
  • 我对Groovy很陌生,我想从主groovy脚本中的另一个groovy脚本中导入一个类。我已经看到了这篇文章。但是由于环境限制,我不能使用GroovyClassLoader之类的函数或导入任何库/框架。我唯一的可能性是使用评估方法。 我试过这个: 主脚本(评估不会抛出任何错误) Csvreader脚本 但是,我需要通过evaluate调用传递参数(并将方法移到类之外),或者需要创建类的实例。不幸的

  • 我有一些库脚本:lib1。groovy: lib2.groovy: lib3.groovy: 并希望在另一个脚本中使用它们:conf.groovy: conf.groovy是由用户配置的,他不知道我的后台lib脚本!他只知道提供的方法/任务:a()、b()、c()。实际上,我创建lib脚本是为了简化用户。 有没有办法将lib目录中的所有脚本(脚本lib1、lib2m、lib3)都包含到conf.g

  • 问题内容: 我不想在Maven存储库(本地/远程)中安装几个jar。特别是我有一些jar文件位于 使用NetBeans打开/编辑时如何将它们包括到我的项目中? 问题答案: 您是否考虑过将这两个JAR添加为依赖项?例如, 请注意,不建议这样做,如果有的话,应该非常谨慎地使用它。

  • 问题内容: 我知道应该避免本地进口,但是在这种情况下需要特殊情况。这是一个私有存储库,由于服务器上缺少私有密钥,因此与绝对URL一起使用时,heroku buildpack在该阶段失败。 现在我得到这个错误。 所有导入路径都已更改为本地版本,那么还有什么可以使软件包成为“非本地”文件呢?我该如何解决? 问题答案: 我修好了它。问题是root软件包在中。一旦我将软件包移到错误处,错误就消失了(因此,

  • 好的,这是我们得到的: 我们有两个库包,我们已经将它们编译成JAR。 我们用 而且 给我们装进罐子里。 现在我们想将这两个罐子包含到另一个Java项目中。 所以我们有 /project/src/a_pack/helloworld. /project/libs/starwars.jar /project/libs/barwars.jar /project/manifest.txt MANIFEST.

  • 问题内容: 我正在尝试从Java签名的applet中读取便携式设备。…我在http://code.google.com/p/jmtp/w/list上找到了一个jmtp库 ,可以访问便携式设备,但是当我在其中运行时netbeans它给出了错误 我搜索后发现,我必须将.dll文件作为本机库包含在jmtp项目中…我右键单击项目并导航至属性,然后选择“运行”和“选择的VM选项”作为 并将该jmtp.dll