web-dev-qa-db-ja.com

コンパイルエラー:パッケージjavax.servletは存在しません

Javax.servlet。*およびjavax.servlet.http。*をインポートするパッケージがあります。コマンドプロンプトでコンパイルしようとするとエラーが発生します

パッケージjavax.servletは存在しません

JDK 1.7.0およびTomcat 6.0を使用します。

60
Karadous

Tomcatの/lib/servlet-api.jarファイルへのパスをコンパイル時のクラスパスに追加する必要があります。

javac -cp .;/path/to/Tomcat/lib/servlet-api.jar com/example/MyServletClass.Java

クラスパスは、Javaがインポートされた依存関係を探す必要がある場所です。それ以外の場合は、上記の例で.として含まれている現在のフォルダーがデフォルトになります。 ;は、Windowsのパス区切り文字です。 UnixベースのOSを使用している場合は、代わりに:を使用する必要があります。

71
BalusC

Mavenプロジェクトを使用している場合は、pom.xmlに次の依存関係を追加します

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.0.1</version>
    <scope>provided</scope>
</dependency>
24
Swalih

JSPまたはサーブレットですか?

さて、これら2つのパッケージは、実際にはJava.ioのようにJavaに組み込まれていません。代わりに、サーブレット対応のWebサーバー(Tomcatなど)が付属しています。そのため、Javaコンパイラーがサーブレットをコンパイルできるようになる前に、これら2つのパッケージ内のクラスの場所を知らせる必要があります。

必要なクラスは通常、servlet.jarというファイルに保存されます。このファイルの正確な場所は、使用する特定のWebサーバーソフトウェアによって異なりますが、Tomcatの場合は、Tomcatのメインインストールディレクトリのlibサブディレクトリ(d:\ Program Files\Apache Group\jakarta- Tomcat-3.2.3\lib\servlet.jar)。 Javaコンパイラがサーブレットをコンパイルできるようにするには、このファイルをJavaクラスパスに追加する必要があります。デフォルトでは、Javaは現在のディレクトリ( "。")でのみクラスを検索します。副<文>この[前述の事実の]結果として、それ故に、従って、だから◆【同】consequently; therefore <文>このような方法で、このようにして、こんなふうに、上に述べたように◆【同】in this manner <文>そのような程度まで<文> AひいてはB◆【用法】A and thus B <文>例えば◆【同】for example; as an example、 "。"デフォルトのクラスパスです。クラスパスを変更してservlet.jarファイル(Windowsでは「。; d:...\lib\servlet.jar」、Unixでは「。:/ usr /.../ lib/servlet.jar」を含む場合)、サーブレットは正常にコンパイルする必要があります。

次のようにjavac.exeを実行するときに使用するクラスパスを指定できます。

d:\javadev> javac -classpath ".;d:\Program Files\Apache Group\ jakarta-Tomcat-3.2.3\lib\servlet.jar" MyServlet.Java

または、Linuxではjavacは次の代わりに:を使用します。

server1> javac -classpath ".:./servlet/servlet.jar" MyServlet.Java

9
Frankline

Linux環境では、ソフトリンクは明らかに機能しません。物理パスを使用する必要があります。たとえば、私のマシンでは/usr/share/tomacat7/lib/servlet-api.jarにソフトリンクがあり、これをクラスパス引数として使用すると、同じエラーでコンパイルが失敗しました。代わりに、/usr/share/Java/Tomcat-servlet-api-3.0.jarを使用する必要がありました。これは、ソフトリンクがポイントしたファイルです。

6
Chezzwizz

これが私にとって問題を解決したものです:

<dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>jsp-api</artifactId>
    <version>2.2</version>
    <scope>provided</scope>
</dependency>
5
Koray Tugay

ファイル「servlet-api.jar」をロケーションYOUR_INSTILLATION_PATH\Tomcat\lib\servlet-api.jarからコピーして、ファイルをJavaディレクトリに貼り付けます- YOUR_INSTILLATION_PATH\Java\jdk1.8.0_121\jre\lib\ext

これは動作します(テスト済み)。

3
Md Rehan

JSPとサーブレットはサーバー側のプログラミングです。 Tomcatのようなサーバー内の組み込みパッケージとして提供されます。パスは賢明なものかもしれません

C:\Program Files\Apache Software Foundation\Tomcat 6.0\lib\jsp-api.jar
C:\Program Files\Apache Software Foundation\Tomcat 6.0\lib\servlet-api.jar

あなたがしたいのは、次の方法でこれを追加することです

Right Click> My Computer>Advanced>Environment Variables>System variables

Do> New..> Variable name:CLASSPATH
           Variable value:CLASSPATH=.;C:\Program Files\Apache Software Foundation\Tomcat 6.0\lib\servlet-api.jar;
2
Ravi Chandran

Servlet-api.jarをクラスパスに追加します。 Tomcatのlibフォルダーにあります。

2
Abhendra Singh

提案された解決策を試みた後でも、Javaパスの多くのインスタンスが入力されたため、問題を解決できませんでした。

  1. 「Path、Java_HOME、JRE_HOME」からすべてのJava関連パス(異なるバージョンのJava)を削除し、フレッシュから作成しました。

  2. 設定しました(インストールごとにパスが変わる場合があります)
    a。 Java_HOMEとしてC:\ Program Files\Java\jdk1.8.0_191
    b。 C:\ Program Files\Java\jdk1.8.0_191\jre\libとしてのJRE_HOME
    c。パスにバイナリファイルパスを追加:C:\ Program Files\Java\jdk1.8.0_191\bin
    d。 C:\ Apache-Tomcat-7.0.93\libとしてのCLASSPATH

  3. システム/ユーザー変数の変更/作成中に既に開いている場合は、同じコマンドプロンプトで試行しないでください。閉じて新しいものを開きます。

参考画像: enter image description here

0
Pankaj

これは私が見つけたものです。環境変数にCLASSPATHとして/usr/local/Apache-Tomcat-7.0.64/lib/servlet-api.jarを追加します。 OSはiOSです。

bashを使用している場合:〜/ .bash_profile $CLASSPATH=/usr/local/Apache-Tomcat-7.0.64/lib/servlet-api.jar

zshを使用している場合:〜/ .zshrc export CLASSPATH="usr/local/Apache-Tomcat-7.0.64/lib/servlet-api.jar"

今すぐ強制的に動作させ、source .bash_profile(または.zshrc)を実行するか、コンピューターを再起動して現在のユーザーで動作させます。

0
Tiina