it-swarm.com.ru

IntelliJ IDEA невозможно разрешить импорт javax.servlet. *;

Итак, мой проект работал отлично, и я решил установить новый жесткий диск (SSD), и теперь я не могу заставить его работать правильно.

Я использую Intellij, и у меня есть все эти проблемы импорта.

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

Они говорят, что не могут разрешить символ.

Также в моем web.xml у меня есть это.

<filter>
    <filter-name>LoginFilter</filter-name>
    <filter-class>com.mkyong.LoginFilter</filter-class>
</filter>

говорится

com.mkyong.LoginFilter is not assignable to javax.servlet.Filter

Я собираюсь включить мой web.xml на тот случай, если это кому-то понадобится.

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="http://Java.Sun.com/xml/ns/javaee" 
xmlns:web="http://Java.Sun.com/xml/ns/javaee/web-app_2_5.xsd" 
xsi:schemaLocation="http://Java.Sun.com/xml/ns/javaee 
http://Java.Sun.com/xml/ns/javaee/web-app_2_5.xsd" 
id="WebApp_ID" version="2.5">

<display-name>JavaServerFaces</display-name>

<resource-ref>
<description>MySQL Datasource example</description>
<res-ref-name>jdbc/mkyongdb</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>


<!-- Change to "Production" when you are ready to deploy -->
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>

<!-- Welcome page -->
<welcome-file-list>
<welcome-file>faces/default.xhtml</welcome-file>
</welcome-file-list>

<!-- JSF mapping -->
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>

  <!-- Map these files with JSF -->
 <servlet-mapping>
  <servlet-name>Faces Servlet</servlet-name>
  <url-pattern>/faces/*</url-pattern>
 </servlet-mapping>

 <servlet-mapping>
   <servlet-name>Faces Servlet</servlet-name>
   <url-pattern>*.jsf</url-pattern>
 </servlet-mapping>

<servlet-mapping>
  <servlet-name>Faces Servlet</servlet-name>
  <url-pattern>*.faces</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>

<filter>
    <filter-name>LoginFilter</filter-name>
    <filter-class>com.mkyong.LoginFilter</filter-class>
</filter>
<!-- Set the login filter to secure all the pages in the /secured/* path of the application  -->
<filter-mapping>
    <filter-name>LoginFilter</filter-name>
    <url-pattern>/secured/*</url-pattern>
</filter-mapping>

<!-- By default go to secured welcome page -->
<welcome-file-list>
    <welcome-file>secured/welcome.xhtml</welcome-file>
</welcome-file-list>

</web-app>

Это ошибка, которую я получаю сейчас.

   javax.servlet.ServletException: Servlet.init() for servlet Faces Servlet threw exception
org.Apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.Java:504)
org.Apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.Java:79)
org.Apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.Java:610)
org.Apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.Java:534)
org.Apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.Java:1081)
org.Apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.Java:658)
org.Apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.Java:277)
    org.Apache.Tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.Java:2381)
    org.Apache.Tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.Java:2370)
    Java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Java:1142)
    Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:617)
    org.Apache.Tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.Java:61)
    Java.lang.Thread.run(Thread.Java:745)
root cause

Java.lang.IllegalStateException: Application was not properly initialized at startup, could not    find Factory: javax.faces.context.FacesContextFactory
javax.faces.FactoryFinder$FactoryManager.getFactory(FactoryFinder.Java:800)
javax.faces.FactoryFinder.getFactory(FactoryFinder.Java:302)
javax.faces.webapp.FacesServlet.init(FacesServlet.Java:186)
org.Apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.Java:504)
org.Apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.Java:79)
org.Apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.Java:610)
org.Apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.Java:534)
org.Apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.Java:1081)
org.Apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.Java:658)
org.Apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.Java:277)
org.Apache.Tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.Java:2381)
org.Apache.Tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.Java:2370)
Java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Java:1142)
Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:617)
org.Apache.Tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.Java:61)
Java.lang.Thread.run(Thread.Java:745)

Сначала я также использовал Apache Tomcat 8, потом подумал, что это может быть проблемой, и я изменил его на 7, а затем на 6. Если вам нужно что-то еще, пожалуйста, дайте мне знать!

вот 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.mkyong.common</groupId>
 <artifactId>JavaServerFaces</artifactId>
 <packaging>war</packaging>
 <version>1.0-SNAPSHOT</version>
 <name>JavaServerFaces Maven Webapp</name>
 <url>http://maven.Apache.org</url>

<repositories>
 <repository>
   <id>Java.net.m2</id>
   <name>Java.net m2 repo</name>
   <url>http://download.Java.net/maven/2</url>
 </repository>
</repositories>

<dependencies>

  <dependency>
      <groupId>org.springframework.security</groupId>
      <artifactId>spring-security-web</artifactId>
      <version>3.2.5.RELEASE</version>
  </dependency>

<!-- MySQL database driver -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-Java</artifactId>
    <version>5.1.9</version>
</dependency>

<!-- Spring framework --> 
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring</artifactId>
    <version>2.5.6</version>
</dependency>

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>2.5.6</version>
</dependency>


<!-- For Servlet Container like Tomcat -->
<!-- http://download.Java.net/maven/2 -->
<dependency>
  <groupId>com.Sun.faces</groupId>
  <artifactId>jsf-api</artifactId>
  <version>2.1.0-b03</version>
</dependency>



<!-- EL 2.2 to support method parameter in EL -->
<dependency>
  <groupId>org.glassfish.web</groupId>
  <artifactId>el-impl</artifactId>
  <version>2.2</version>
</dependency>


<!-- http://repo1.maven.org/maven2/ -->
<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>jstl</artifactId>
  <version>1.2</version>
</dependency>

  <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.1</version>
  </dependency>

  <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>2.5</version>
  </dependency>


</dependencies>


 <build>
   <finalName>JavaServerFaces</finalName>

  <plugins>
     <plugin>
       <groupId>org.Apache.maven.plugins</groupId>
       <artifactId>maven-compiler-plugin</artifactId>
       <version>2.3.1</version>
       <configuration>
           <source>1.6</source>
           <target>1.6</target>
       </configuration>
   </plugin>
</plugins>

28
Justin

Servlet-api.jar является частью вашего сервера (в данном случае Tomcat). Вам нужно либо указать ссылку на этот jar-файл в своем POM и пометить его в «предоставленной» области, либо (если по какой-то причине вы не используете maven), вам нужно добавить его в ваш classpath (библиотеки вашего веб-модуля в проект).

Вероятно, возможно, что ваш установщик Tomcat или репозиторий Maven будет отличаться после переустановки HD. Это похоже на экологическую проблему.

21
Filip

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

Если вы не используете Maven для своего проекта (например, учебные пособия и т.д.), Вы можете перейти к настройкам вашей структуры проекта/Модули/ваш модуль/Зависимости ... и внизу списка зависимостей есть небольшой символ плюс (+), где вы можете выберите «Библиотека», после чего появится всплывающее окно с библиотеками сервера приложений. Это должно быть выбрано, как предусмотрено впоследствии. 

 Application Server Libraries Dialog

18
Jiri Vlasimsky

Я нашел ту же проблему и только что исправил ее сегодня. Хотя я объявил javax.servlet-api в моем pom.xml, но все еще получил проблему. Затем я исправил это, добавив файл javax.servlet-api: 3.10.jar в путь к классам проекта.

 enter image description here

2
Luan Vo

Похоже, что что-то испортилось при импорте проекта. Я сделал новый проект и просто скопировал все, и он работал отлично. Импорт делался там, где не удалось найти файлы jar. Не уверен почему .... Спасибо за помощь всем!

2
Justin

Вы используете в терминал mvn clean install  

Эта команда загружает все зависимости, после чего вы идете в «Maven Project» и берете «Reimport All Maven Project»

enter image description hereenter image description here

1
Yani Morales