Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dependencies Gradle是否向类路径添加外部依赖项(JAR)?_Dependencies_Gradle - Fatal编程技术网

Dependencies Gradle是否向类路径添加外部依赖项(JAR)?

Dependencies Gradle是否向类路径添加外部依赖项(JAR)?,dependencies,gradle,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.Fina

我正在为学校做一个项目,我需要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'
}
...
我还将classes文件夹添加到classpath中。 gradle的构建还可以,它实际上下载了库和所有库,但当我运行我的程序时(从cmd行中的>java name.of.package.Main),它会说:

> 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在这种情况下有什么用


非常感谢

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

谢谢您的回复!实际上,由于这是一个学校项目,我没有添加应用程序插件的选项,我必须遵循一些说明,这些说明说,我必须配置我的
build.gradle
,键入命令行gradle build,然后键入java name.of.package.Main arg1。尽管gradle从mavenCentral下载,但它无法从库中找到类的可能原因是什么?再次感谢,我真的需要这个。下载图书馆是一回事;告诉
java
命令关于它们是另一回事。如果您直接调用
java
命令,Gradle将无法帮助您实现这一点。您必须使用-cp选项,或者设置
CLASSPATH
变量。为了简化这个过程,您首先将所有必需的库复制到一个目录中,例如:“task copyLibs(type:copy){from configurations.runtime;into“lib”}”