2

これが一般的なエラーであることは知っていますが、我慢してください。私はCLASSPATHの問題を追求しましたが、それが問題だとは思いません。このようなエラーが発生します。

./src/process.java:2: package javax.servlet does not exist
import javax.servlet.*;

TomcatとJavaSDKをインストールしましたが、TomcatがサーブレットAPIを提供することになっていることを知っています。しかし、それは正確にどのファイルを探していますか?

次の設定があります:JAVA_HOME = / usr / java / jdk1.6.0_16 CLASSPATH = / usr / share / java; / usr / share / java / tomcat6

tomcatのベースディレクトリ:/ usr / share / tomcat6このディレクトリでは、/ usr / share / tomcat6/libは単に/usr/ share / java/tomcat6へのシンボリックリンクです。

tomcat6-servlet-2.5-api-6.0.18.jarは/usr/share/java/tomcat6にありますが、このライブラリを使用するためにjavacに通知する必要があるものは他にありますか?必要な別のライブラリはありますか?

背景として、helloworldサーブレットを実行しようとしています。コードは次のとおりです。

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class process extends HttpServlet {

public void doGet( HttpServletRequest request, 
                   HttpServletResponse response)
              throws ServletException, IOException {

    PrintWriter out = response.getWriter();
    out.println("Hello World");

}
}

これをjavacでコンパイルすると、次のエラーが発生します(特にこれが根本的な原因です)。

./src/process.java:2: package javax.servlet does not exist
import javax.servlet.*;
^
./src/process.java:3: package javax.servlet.http does not exist
import javax.servlet.http.*;
^

コマンドラインでも-cpオプションを使用してクラスパスを指定しようとしましたが、同じ結果になりました。

4

2 に答える 2

5

JARを具体的に指すようにクラスパスを設定する必要があります。

CLASSPATH=/usr/share/java/tomcat/tomcat6-servlet-2.5-api-6.0.18.jar

クラスパスでフォルダを指定すると、そのフォルダ内のすべてのクラスを見つけるためにのみ使用されます。JAR自体はクラスのライブラリ(必要に応じてパッケージ化されたフォルダ)であるため、個別にリストする必要があります。したがって、たとえば、次のようなことができます。

CLASSPATH=/some/location/myjar1.jar:/other/location/myjar2.jar:/some/classes/folder

myjar1.jarこの場合、、myjar2,jarおよびディレクトリのすべてのクラスを/some/classes/folder使用できます。にある場合myjar3.jar/some/classes/folder上記の宣言はそれをクラスパスに追加しません。

更新McDowellが指摘したように、Java 6では、指定されたフォルダー内のすべてのjarを取得するクラスパス内のワイルドカードが許可されます。ワイルドカードはJARに対してのみ機能し、ワイルドカードなしでフォルダーが再度指定されない限り、クラスは取得されません。ワイルドカードも再帰的ではありません。それで:

CLASSPATH=/loc1/*:/loc1:/loc2/*

フォルダ内のすべてのjarとすべてのクラス、/loc1およびフォルダ内のすべてのjar(クラスではない)を使用可能にし/loc2ます。より深いネストされたjar(/loc1/nested/some.jar)は取得されません。

于 2009-10-29T17:22:53.810 に答える
0

コンソールまたは*.batファイルに何かを書き込みます。

SET CLASSPATH = C:\ java \ apache-tomcat-7.0.53 \ lib \servlet-api.jar

于 2014-04-21T08:16:15.580 に答える