2012-02-08 7 views

答えて

57

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

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

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

+2

真、将来的には – Kris

+7

やEclipseなどのIDEだけで、あなたのためにこの種の問題を解決するためにMavenを使用することを検討してください。私はしかし、あなたがそれをほとんど夢見ることができるまで、難しい道を学ぶことを続けることを勧めます。さもなければ、IDEがどのようにカバーの下で動作するかを理解することは難しいでしょう。 – BalusC

+0

BalusCに感謝します。それは問題を解決しました。 – Karadous

6

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

+0

ファイルをコンパイルするときはいつでもこれを行う必要がありますか?つまり、ファイルをコンパイルするたびにクラスパスを設定する方法があります。 – Karadous

+0

* .javaというファイルをコンパイルするには、servlet.jarがクラスパスにあることを確認する必要があります。 JSPは結局、Javaファイルであるサーブレットに変換されることに注意してください。 – Frankline

+0

誰かがアドバイスを持っています:* "d:¥Program Files¥Apache Group¥jakarta-tomcat-3.2.3¥lib¥servlet.jar;をJAVA_HOMEに追加するWindowsを使用している場合、変数もマジックを実行します" * – Pubby

1

あなたのクラスパスにサーブレット-api.jarを追加します。これはTomcatのlibフォルダにあります。

1

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; 
5

次のようにこれを追加しています。物理パスを使用する必要があります。私のマシンでは、/usr/share/tomacat7/lib/servlet-api.jarにソフトリンクがあり、これをクラスパス引数として使用すると、同じエラーでコンパイルに失敗しました。代わりにソフトリンクが指し示すファイルである/usr/share/java/tomcat-servlet-api-3.0.jarを使用しなければなりませんでした。

18

あなたがmavenプロジェクトを使っている場合、あなたのpomに以下の依存関係を追加してください。xml

<dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>javax.servlet-api</artifactId> 
    <version>3.0.1</version> 
    <scope>provided</scope> 
</dependency> 
+2

{servlet-api}、バージョン: '2.4'} ' – MarkHu

+0

は私のためにはまだ動作しません –

+0

これは私のために、多くのありがとう –

0

これは私が見つけたものです。私の環境変数に/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つは、コンピュータを再起動することができますそれは現在のユーザーのために働く。

4

これは私のために問題を解決したものです:

<dependency> 
    <groupId>javax.servlet.jsp</groupId> 
    <artifactId>jsp-api</artifactId> 
    <version>2.2</version> 
    <scope>provided</scope> 
</dependency> 
関連する問題