मैं एक मेवेन प्रोजेक्ट बना रहा हूं यह मेवेन के साथ मेरा पहला मौका है। मैं नेटबीन्स और टॉमकैट सर्वर का उपयोग कर रहा हूं और मैं किसी भी javax.servlet को आयात करने में सक्षम नहीं हूं उदा। आयात javax.servlet.RequestDispatcher; आदि ऐसा दिखता है:

enter image description here

जानकारी है: javax.servlet मौजूद नहीं है और नेटबीन्स द्वारा प्रस्तावित समाधान उदाहरण के लिए है: "javax.servlet.RequestDispatcher के लिए मेवेन रिपोजिटरी पर निर्भरता खोजें। जब मैं इसे क्लिक करता हूं तो कुछ भी किए बिना पॉप-अप विंडो होती है: यहां छवि विवरण दर्ज करें

मेरे पास सी: //pathToNetbeansProjects/myProject/pom.xml में स्थित pom.xml फ़ाइल है और मैंने javax-servlet के लिए एक निर्भरता जोड़ी है, अब मेरा 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 में कुछ गलत कर रहा हूं या शायद मुझे इसे काम करने के लिए नेटबीन्स में कुछ करने की ज़रूरत है तो मेरे पास और कोई विचार नहीं है। लेकिन मुझे नहीं पता कि वास्तव में क्या है।

1
Luke_Nuke 24 अगस्त 2018, 12:20
ये इंटरफेस javax.servlet-api में हैं और इसलिए इसे काम करना चाहिए। क्या आप मेवेन प्रोजेक्ट बना सकते हैं?
 – 
Simon Martinelli
24 अगस्त 2018, 12:26

2 जवाब

सबसे बढ़िया उत्तर

समस्या उस पुस्तकालय पर मेवेन द्वारा किए गए एक अलग आयात के कारण 99% है। मेवेन एक पदानुक्रमित तरीके से आपके libs आयात करता है, इसलिए शायद कुछ lib है जिसे आपने आयात किया है जिसमें javax.servlet शामिल है, लेकिन यह वह संस्करण नहीं है जिसकी आपको आवश्यकता है।

सबसे पहले मैं आपको यह देखने का सुझाव देता हूं कि मावेन पदानुक्रम को देखकर संघर्ष को हल करने के लिए कौन सा ऐसा कर रहा है, आप इसे कंसोल कमांड mvn dependency:tree -Dverbose के साथ प्राप्त कर सकते हैं (देखें यहां उदाहरण के लिए)।

फिर आप अपने पुस्तकालय के अंदर एक विशिष्ट मावेन कमांड द्वारा अवांछित पुस्तकालयों को छोड़ सकते हैं:

<dependency>
....

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

</dependency>

यह "क्यों" ऐसा हो रहा है, इसे समझने के लिए यह एक उपयोगी व्याख्या है, ताकि आप इसे समझ सकें।

बीटीडब्ल्यू एक त्वरित सुधार, जिसे आप पहली बार के रूप में आजमा सकते हैं, वह आयात ले जा रहा है जो आप चाहते थे javax.servlet आपके pom.

2
Leviand 24 अगस्त 2018, 12:59
1
शुक्रिया! मुझे यह समझने के लिए कि हुड के नीचे क्या हो रहा है :) बीमार उन समाधानों को आजमाएं।
 – 
Luke_Nuke
24 अगस्त 2018, 12:53
1
इतना ही! यह काम करता है, मेरे लिए इसे स्पष्ट करने के लिए धन्यवाद! :)
 – 
Luke_Nuke
24 अगस्त 2018, 12:56
खुशी हुई मदद की!
 – 
Leviand
24 अगस्त 2018, 12:57

अपने मावेन प्रोजेक्ट को फ़ोर्स अपडेट करें या चलाएं एमवीएन क्लीन इंस्टाल अपने प्रोजेक्ट की निर्देशिका पर pom.xml की सभी निर्भरता को डाउनलोड करने के लिए। तब अपना प्रोजेक्ट बनाएं और जावैक्स-सर्वलेट उपलब्ध होगा।

1
Adya 24 अगस्त 2018, 12:27