存在しないのjavax.servlet *パッケージとのjavax.servlet.http * 私は、コマンドプロンプトでそれをコンパイルしようとすると、私はエラーコンパイルエラー:。私はのjavax.servletをインポートするパッケージを持って
を取得します。package javax.servlet does not exist
私はJDK 1.7.0とTomcat 6.0を使用します。
存在しないのjavax.servlet *パッケージとのjavax.servlet.http * 私は、コマンドプロンプトでそれをコンパイルしようとすると、私はエラーコンパイルエラー:。私はのjavax.servletをインポートするパッケージを持って
を取得します。package javax.servlet does not exist
私はJDK 1.7.0とTomcat 6.0を使用します。
コンパイル時のクラスパスに、Tomcatの/lib/servlet-api.jar
ファイルへのパスを追加する必要があります。
javac -cp .;/path/to/Tomcat/lib/servlet-api.jar com/example/MyServletClass.java
クラスパスはインポートされた依存関係を探す必要がある場所です。それ以外の場合は、上記の例では.
として含まれている現在のフォルダにデフォルト設定されます。 ;
はWindowsのパス区切り文字です。 UnixベースのOSを使用している場合は、代わりに:
を使用する必要があります。
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は現在のディレクトリ( "。")内のクラスのみを検索します。したがって、 "。"デフォルトのクラスパスです。 UNIXでは、Windowsの場合は "。; d:... \ lib \ servlet.jar"、servlet.jarファイル( "。:/ 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
ファイルをコンパイルするときはいつでもこれを行う必要がありますか?つまり、ファイルをコンパイルするたびにクラスパスを設定する方法があります。 – Karadous
* .javaというファイルをコンパイルするには、servlet.jarがクラスパスにあることを確認する必要があります。 JSPは結局、Javaファイルであるサーブレットに変換されることに注意してください。 – Frankline
誰かがアドバイスを持っています:* "d:¥Program Files¥Apache Group¥jakarta-tomcat-3.2.3¥lib¥servlet.jar;をJAVA_HOMEに追加するWindowsを使用している場合、変数もマジックを実行します" * – Pubby
あなたのクラスパスにサーブレット-api.jarを追加します。これはTomcatのlibフォルダにあります。
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
等であってもよいことは、ソフトリンクは明らかに動作しないLinux環境で
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;
次のようにこれを追加しています。物理パスを使用する必要があります。私のマシンでは、/usr/share/tomacat7/lib/servlet-api.jar
にソフトリンクがあり、これをクラスパス引数として使用すると、同じエラーでコンパイルに失敗しました。代わりにソフトリンクが指し示すファイルである/usr/share/java/tomcat-servlet-api-3.0.jar
を使用しなければなりませんでした。
あなたがmavenプロジェクトを使っている場合、あなたのpomに以下の依存関係を追加してください。xml
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
これは私が見つけたものです。私の環境変数に/usr/local/apache-tomcat-7.0.64/lib/servlet-api.jarをCLASSPATHとして追加する。 OSはiOSです。 zshの使用している場合は、〜/ .bash_profileの$CLASSPATH=/usr/local/apache-tomcat-7.0.64/lib/servlet-api.jar
:
はbashを使用している場合は、〜/ .zshrc輸出CLASSPATH="usr/local/apache-tomcat-7.0.64/lib/servlet-api.jar"
フォースそれが、今の仕事を実行source .bash_profile
(または.zshrc) を、または1つは、コンピュータを再起動することができますそれは現在のユーザーのために働く。
これは私のために問題を解決したものです:
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
<scope>provided</scope>
</dependency>
真、将来的には – Kris
やEclipseなどのIDEだけで、あなたのためにこの種の問題を解決するためにMavenを使用することを検討してください。私はしかし、あなたがそれをほとんど夢見ることができるまで、難しい道を学ぶことを続けることを勧めます。さもなければ、IDEがどのようにカバーの下で動作するかを理解することは難しいでしょう。 – BalusC
BalusCに感謝します。それは問題を解決しました。 – Karadous