Невозможно импортировать любой javax-сервлет в проекте Maven в Netbeans - PullRequest
0 голосов
/ 24 августа 2018

Я делаю проект Maven, я впервые с Maven.Я использую Netbeans и сервер Tomcat и не могу импортировать javax.servlet, например import javax.servlet.RequestDispatcher;и т. д. Это выглядит так:

enter image description here

Есть информация: javax.servlet не существует, и решение, предлагаемое Netbeans, например: «ПоискЗависимость в репозитории Maven для javax.servlet.RequestDispatcher. Когда я щелкаю по нему, появляется всплывающее окно без каких-либо действий: enter image description here

У меня есть файл pom.xmlрасположенный в C: //pathToNetbeansProjects/myProject/pom.xml, и я добавил зависимость для javax-сервлета, теперь мой 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>org.glassfish.jersey.archetypes</groupId>
<artifactId>ParkingSystem</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>ParkingSystem</name>

<build>
    <finalName>ParkingSystem</finalName>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.5.1</version>
            <inherited>true</inherited>
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
            </configuration>
        </plugin>
    </plugins>
</build>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.glassfish.jersey</groupId>
            <artifactId>jersey-bom</artifactId>
            <version>${jersey.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>
    <dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-servlet-core</artifactId>
        <!-- use the following artifactId if you don't need servlet 2.x compatibility -->
        <!-- artifactId>jersey-container-servlet</artifactId -->
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.inject</groupId>
        <artifactId>jersey-hk2</artifactId>
    </dependency>
    <!-- uncomment this to get JSON support -->
    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-json-binding</artifactId>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>4.0.1</version>
        <scope>provided</scope>
    </dependency>       
</dependencies>

<properties>
    <jersey.version>2.27</jersey.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

У меня больше нетидеи, если я делаю что-то не так с моим pom.xml или, возможно, мне нужно что-то сделать в Netbeans, чтобы это работало. Но я не знаю, что на самом деле.

Ответы [ 2 ]

0 голосов
/ 24 августа 2018

Проблема на 99% вызвана другим импортом, выполненным Maven для этой библиотеки. Maven импортирует ваши библиотеки в иерархическом порядке, поэтому, возможно, вы импортировали некоторую библиотеку, содержащую javax.servlet, но вам нужна не та версия.

Сначала я предлагаю вам выяснить, какой из них делает это для разрешения конфликта путем изучения иерархии maven, вы можете добиться этого с помощью консольной команды mvn dependency:tree -Dverbose (посмотрите здесь для примера).

Затем вы можете опустить ненужные библиотеки с помощью определенной команды maven внутри вашей библиотеки:

<dependency>
....

    <exclusions> 
        <exclusion>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
        </exclusion>
    </exclusions> 

</dependency>

Это объяснение полезно для понимания "почему" происходит это, так что вы можете понять это.

Кстати, быстрое исправление, которое вы можете попробовать в первую очередь, перемещает импорт, который вы хотели javax.servlet как первый элемент вашего пом.

0 голосов
/ 24 августа 2018

Принудительно обновите ваш проект maven или запустите mvn clean install в каталоге вашего проекта, чтобы загрузить все зависимости pom.xml.Создайте свой проект тогда, и javax-сервлет будет доступен.

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