Gradle是否将外部依赖项(jar)添加到类路径?

时间:2011-11-13 23:52:33

标签: dependencies gradle

我正在为学校开展一个项目,我需要Jackson库来解析json文件。我在我的gradle脚本中包含了库,如下所示:

...
dependencies {
    compile 'org.codehaus.jackson:jackson-core-asl:1.9.0'
    compile 'org.codehaus.jackson:jackson-mapper-asl:1.9.0'
    compile 'org.hibernate:hibernate-validator:4.2.0.Final'
    testCompile 'junit:junit:4.9'
}
...

我还将class文件夹添加到classpath中。 使用gradle构建是可以的,它实际上下载了库和所有,但是当我运行我的程序时(从带有> java name.of.package.Main的cmd行),它说:

> Exception in thread "main" java.lang.NoClassDefFoundError:
> org/codehaus/jackson/map/JsonMappingException
>         at java.lang.Class.getDeclaredMethods0(Native Method)
>         at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
>         at java.lang.Class.getMethod0(Unknown Source)
>         at java.lang.Class.getMethod(Unknown Source)
>         at sun.launcher.LauncherHelper.getMainMethod(Unknown Source)
>         at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source) Caused by: java.lang.ClassNotFoundException:
> org.codehaus.jackson.map.JsonMappingException
>         at java.net.URLClassLoader$1.run(Unknown Source)
>         at java.net.URLClassLoader$1.run(Unknown Source)
>         at java.security.AccessController.doPrivileged(Native Method)
>         at java.net.URLClassLoader.findClass(Unknown Source)
>         at java.lang.ClassLoader.loadClass(Unknown Source)
>         at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
>         at java.lang.ClassLoader.loadClass(Unknown Source)
>         ... 6 more

但我注意到当我将gradle文件中的两个库添加到classpath时,一切正常..

有人可以告诉我是否应该手动将库添加到类路径中?那么在这种情况下gradle的用途是什么..

非常感谢!

1 个答案:

答案 0 :(得分:3)

Gradle没有设置CLASSPATH环境变量(如果这是你的意思)。 Application plugin允许您使用gradle run运行命令行应用程序。该插件还可以创建用于运行应用程序的shell脚本。在这两种情况下,正确的类路径都将传递给JVM。