Перед выполнением динамического веб-проекта в Eclipse возникает проблема. Я создал проект Maven (archtype - webapp), а затем добавил в него поведение DWP, добавив maven-eclipse-plugin (версия 2.9). Я добавил свои проект зависимостей в POM файл, который является следующимТранзитивные зависимости, не разрешенные во время выполнения в eclipse wtp
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>au.com.fairfaxdigital</groupId>
<artifactId>accessloganalyzer</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>accessloganalyzer Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>net.sourceforge.wurfl</groupId>
<artifactId>wurfl</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.8</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<repositories>
<repository>
<id>scientiamobile.public</id>
<name>Scientia Mobile Public repository</name>
<url>http://dev.scientiamobile.com/nexus/content/repositories/public-releases/</url>
</repository>
</repositories>
<build>
<finalName>accessloganalyzer</finalName>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-eclipse-plugin</artifactId>
<version>2.9</version>
<configuration>
<projectNameTemplate>accessloganalyzer-${project.version}</projectNameTemplate>
<downloadSources>true</downloadSources>
<downloadJavadocs>true</downloadJavadocs>
<wtpmanifest>true</wtpmanifest>
<wtpapplicationxml>true</wtpapplicationxml>
<wtpversion>2.0</wtpversion>
<manifest>${basedir}/src/main/resources/META-INF/MANIFEST.MF</manifest>
</configuration>
</plugin>
</plugins>
</build>
</project>
Затем создаст проект, используя команду Maven (чистую установку). Я мог видеть сгенерированный файл войны в целевой папке. При попытке запустить это приложение на tomcat в eclipse (project-> right click-> run one server) tomcat начинается с ошибки.
SEVERE: Exception sending context initialized event to listener instance of class net.sourceforge.wurfl.core.web.WURFLServletContextListener java.lang.NoClassDefFoundError: org/apache/commons/lang/StringUtils at net.sourceforge.wurfl.core.web.WURFLServletContextListener.contextInitialized(WURFLServletContextListener.java:81) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4765) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5260) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:866) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:842) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:615) at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:649) at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1581) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) Caused by: java.lang.ClassNotFoundException: org.apache.commons.lang.StringUtils at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1688) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1533) ... 15 more Starting Introspector initialization...
Когда я смотрю в Eclipse, папку, откуда запускается Tomcat приложение (C: \ Дипак \ Study \ Dev \ Практические \ workspace.metadata.plugins \ org.eclipse.wst.server.core \ tmp0 \ wtpwebapps \ accessloganalyzer-1.0-SNAPSHOT), я не нашел никаких зависимостей (включая commons-lang, на которые ссылается ошибка) для сторонней библиотеки wurfl.1.4.jar, которую я использую в своем проекте.
библиотека WURFL использует следующую зависимость, которые не присутствуют в WEB-INF/Lib и, следовательно, вызывает проблему
- фонд-коллекция 3.2.1-
- Обще-лан-2,6
- джексон -core-ASL-1.8.2
- ДЖЕКСОНА-картографа-ASL-1.8.2
- Logback-классическом 0.9.28
- Logback-ядро-0.9.28
- SLF4J-апи-1.6.1
Может ли один пожалуйста, указать, что я не хватает, почему эти переходные зависимости не копируются в WEB-INF/Lib папки в файле WAR приложения?
Вы используете m2e? Если да, то вам не нужен плагин eclipse? Вы уверены в версии версии librere версии 1.4? – khmarbaise
hi khmarbaise, спасибо, что ответили на эту тему. Я попытался удалить плагин eclipse, но результат тот же. Да, я уверен в wurff 1.4. Я загрузил эту библиотеку с сайта wurfl и установил ее вручную, используя команду maven для ручной установки. – user1477713