2015-07-29 2 views
0

Я использую Netbeans для запуска нового приложения, которое будет работать в Glassfish.Проект, созданный с помощью maven-archetype-webapp, не найден сервлет

Я использовал мастер Netbeans для создания нового PROJET с использованием Maven-архетип-веб-приложение и поместить все свои классы под src->main->resources и мои файлы JSP под src->main->webapp

Это мой web.xml:

<?xml version="1.0" encoding="UTF-8"?> 

<web-app xmlns="http://java.sun.com/xml/ns/javaee" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
     version="3.0"> 
    <display-name>My Applicaton Name</display-name> 
    <servlet> 
     <servlet-name>Access</servlet-name> 
     <servlet-class>com.company.department.controller.UserController</servlet-class> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>Access</servlet-name> 
     <url-pattern>/Access</url-pattern> 
    </servlet-mapping> 

</web-app> 

Это pom.xml:

<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>com.mycompany</groupId> 
    <artifactId>MyApp</artifactId> 
    <packaging>war</packaging> 
    <version>1.0-SNAPSHOT</version> 
    <name>MyApp</name> 
    <url>http://maven.apache.org</url> 
    <dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>com.lowagie</groupId> 
     <artifactId>itext</artifactId> 
     <version>2.1.7</version> 
    </dependency> 
    <dependency> 
     <groupId>org.jdom</groupId> 
     <artifactId>jdom2</artifactId> 
     <version>2.0.6</version> 
    </dependency> 
    <dependency> 
     <groupId>com.google.code.gson</groupId> 
     <artifactId>gson</artifactId> 
     <version>2.3.1</version> 
    </dependency> 
    <dependency> 
     <groupId>com.liferay</groupId> 
     <artifactId>org.apache.commons.fileupload</artifactId> 
     <version>1.2.2.LIFERAY-PATCHED-1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.json</groupId> 
     <artifactId>json</artifactId> 
     <version>20141113</version> 
    </dependency> 
    <dependency> 
     <groupId>javax</groupId> 
     <artifactId>javaee-web-api</artifactId> 
     <version>7.0</version> 
     <type>jar</type> 
    </dependency> 
    </dependencies> 
    <build> 
     <finalName>MyApp</finalName> 
    </build> 
</project> 

Когда я запускаю его в моем локальном хосте я получаю java.lang.ClassNotFoundException: com.company.department.controller.UserController

Я новичок на Maven, так где же моя ошибка?

Я нашел некоторые подобные проблемы здесь, в SO, но ни одно решение не решило проблему, и большинство из них направлены на Eclipse и, по-видимому, существуют некоторые различия в NetBeans.

+1

вы не положить ваши классы под SRC/основные/ресурсы, что папка для ресурсов;), вы поместите их под SRC/основной/Java, и при использовании NetBeans, как вы говорите, NetBeans покажет вам разницу между '' 'исходными пакетами''' и' '' другими источниками'' – maress

+0

Thx @maress. Как ни странно, папка java автоматически не создается Netbeans. Во всяком случае, я создал папку, но не работал. См. Часть stacktrace: 'WebModule [/ MyApp] Ошибка загрузки WebappClassLoader (delegate = true; repositories = WEB-INF/classes /) com.company.department.controller.UserController java.lang.ClassNotFoundException: com.company .department.controller.UserController \t at org.glassfish.web.loader.WebappClassLoader.loadClass (WebappClassLoader.java:1783) ' – James

+0

, если вы создали проект maven с использованием netbeans, он всегда будет правильно создавать исходный пакет. И вам нужно добавить область видимости для javaee-зависимостей. Также javaee определяет что-то, называемое '' javaee-endorsed-api''', которое вы указываете – maress

ответ

1

Это фрагмент файла вашего maven pom. Убедитесь, что предусмотрено следующее.

<properties> 
    <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir> 
</properties> 

<dependency> 
    <groupId>javax</groupId> 
    <artifactId>javaee-api</artifactId> 
    <version>7.0</version> 
    <scope>provided</scope> 
</dependency> 

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <version>2.1</version> 
    <executions> 
     <execution> 
      <phase>validate</phase> 
      <goals> 
       <goal>copy</goal> 
      </goals> 
      <configuration> 
       <outputDirectory>${endorsed.dir}</outputDirectory> 
       <silent>true</silent> 
       <artifactItems> 
        <artifactItem> 
         <groupId>javax</groupId> 
         <artifactId>javaee-endorsed-api</artifactId> 
         <version>7.0</version> 
         <type>jar</type> 
        </artifactItem> 
       </artifactItems> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 
Смежные вопросы