質問

これは一般的なエラーであることは承知していますが、ご容赦ください。私はCLASSPATHの問題を追求しましたが、それが問題だとは考えていません。このようなエラーが表示されます。

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

TomcatとJava SDKをインストールしましたが、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に伝える必要があるものは他にありますか?他に必要なライブラリはありますか?

背景として、hello world servletを実行しようとしています。コードは次のとおりです。

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オプションを使用してクラスパスを指定しようとしましたが、同じ結果になりました。

役に立ちましたか?

解決

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 ディレクトリのすべてのクラスが利用可能になります。 / some / classes / folder myjar3.jar がある場合、上記の宣言はクラスパスに NOT を追加しません。

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

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

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

他のヒント

コンソールまたは* .bat-fileに何かを記述します。

  

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top