У меня проблемы с разрешением зависимостей из стороннего пакета.Я немного новичок в Maven.В основном это выглядит так:
git clone git://github.com/unidata/thredds.git
cd thredds
mvn install
Все отлично работает и все установлено в ~/.m2
.Теперь я написал свой собственный код, который использует только что установленный пакет:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>test</groupId>
<artifactId>test</artifactId>
<packaging>jar</packaging>
<version>0.1</version>
<name>Test Package</name>
<dependencies>
<dependency>
<groupId>edu.ucar</groupId>
<artifactId>netcdf</artifactId>
<version>4.3.8-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
Хорошо, это также прекрасно работает, когда я запускаю mvn package
.Артефакт netcdf
найден.Теперь, когда я пытаюсь запустить свой код, я начинаю с длинного пути ClassNotFoundException
, и мне приходится добавлять все зависимости netcdf
в мой путь к классам.
Я делаю что-то не так или долженпакет thredds
и все его зависимости автоматически выбираются?
edit: пакет thredds имеет много подмодулей, одним из которых является netcdf.Мой код зависит только от jar netcdf.
edit: установлена версия снимка
$ ls -l ~/.m2/repository/edu/ucar/netcdf/4.3.8-SNAPSHOT/
total 4272
-rw-rw-r-- 1 nwatkins nwatkins 700 2012-03-29 23:23 maven-metadata-local.xml
-rw-rw-r-- 1 nwatkins nwatkins 182 2012-03-29 23:23 _maven.repositories
-rw-rw-r-- 1 nwatkins nwatkins 4357494 2012-03-29 23:23 netcdf-4.3.8-SNAPSHOT.jar
-rw-rw-r-- 1 nwatkins nwatkins 7840 2012-03-29 22:28 netcdf-4.3.8-SNAPSHOT.pom
edit: для запуска кода, которыйнаходится в одном файле Test.java
$ java -cp target/test-0.1.jar Test
edit: первое сообщение об ошибке
$ java -cp target / test-0.1.jar Test
Exception in thread "main" java.lang.NoClassDefFoundError: ucar/ma2/InvalidRangeException
Caused by: java.lang.ClassNotFoundException: ucar.ma2.InvalidRangeException
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
edit: тогда я просто пытаюсь вручную добавить банку зависимостей в путь к классу
$ java -cp ../thredds/cdm/target/netcdf-4.3.8-SNAPSHOT.jar:target/test-0.1.jar Test
xception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
at ucar.nc2.NetcdfFile.<clinit>(NetcdfFile.java:97)
at Test.main(Test.java:37)
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
... 2 more
Пакет slf4j
также находится в ~/.m2
.Я перестал пытаться добавлять вещи в путь к классам после этого, поскольку это казалось неправильным подходом.at java.lang.ClassLoader.loadClass (ClassLoader.java:266)