guava-11.0.1.jar и плагин Maven для затмения
Я создал Maven проект в Eclipse и добавил несколько зависимостей.
Вот полный список зависимостей:
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.4</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.google.caliper</groupId>
<artifactId>caliper</artifactId>
<version>0.5-rc1</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.7.1</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.7.1</version>
</dependency>
</dependencies>
Затем я запустил Maven install и все несессеры были загружены.
В следующий раз я получил следующее сообщение:
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building mywebapp 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ mywebapp ---
[debug] execute contextualize
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory D:\WORK_SPASE\mywebapp\src\main\resources
[INFO]
[INFO] --- maven-compiler-plugin:2.0.2:compile (default-compile) @ mywebapp ---
[INFO] Compiling 1 source file to D:\WORK_SPACE\mywebapp\target\classes
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.785s
[INFO] Finished at: Thu Jan 31 04:13:10 VET 2013
[INFO] Final Memory: 4M/121M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.0.2:compile (default-compile) on project mywebapp: Compilation failure
[ERROR] error: error reading C:\Users\User1\.m2\repository\com\google\guava\guava\11.0.1\guava-11.0.1.jar; invalid LOC header (bad signature)
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
И когда я попытался запустить свой класс, я получил: Exception in thread "main" java.lang.NoClassDefFoundError: com/google/common/base/Splitter
Пожалуйста, дайте мне совет.
1 ответ
Сначала я вижу, что у вас есть ошибка:
чтение C:\Users\User1.m2\repository\com\google\guava\guava\11.0.1\guava-11.0.1.jar; неверный заголовок LOC (неверная подпись)
которая может быть вызвана сбоем во время загрузки библиотеки. Решение состоит в том, чтобы удалить папку C: \ Users \ User1.m2 \ repository \ com \ google и повторить сборку.
Кроме того, я вижу, что вы используете чрезвычайно старую версию maven-compiler-plugin (2.0.2), которая приводит меня к выводу, что вы не настроили свой maven-compiler-plugin, что означает, что вы используете java 1.4, но вы нужно как минимум 1,5. Вы должны настроить ваш maven-compiler-plugin следующим образом:
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.0</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
Может быть, вы должны изменить на 1,5.