Добавляет ли Gradle внешние зависимости (jars) в путь к классам? - PullRequest
1 голос
/ 14 ноября 2011

Я работаю над проектом для школы, и мне нужна была библиотека Джексона для разбора файлов 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'
}
...

Я также добавил папку с классами в 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 тогда в этом случае ..

Большое спасибо!

1 Ответ

3 голосов
/ 14 ноября 2011

Gradle не устанавливает переменную окружения CLASSPATH (если вы это имеете в виду). Плагин Application позволяет запускать приложение командной строки с gradle run. Плагин также может создавать сценарии оболочки для запуска приложения. В обоих случаях правильный путь к классу будет передан в JVM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...