2012-02-08 43 views
47

yok javax.servlet paket ben javax.servlet içe olduğu bir paket var * ve javax.servlet.http * ben hata alıyorum komut istemine bunu derlemeye çalıştığınızdaDerleme hatası:

..

package javax.servlet does not exist

JDK 1.7.0 ve Tomcat 6.0 kullanıyorum.

cevap

57

Yolu, Tomcat'in /lib/servlet-api.jar dosyasının yolunu derleme zamanı sınıf yoluna eklemeniz gerekir.

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

Sınıf yolu, Java'nın içe aktarılan bağımlılıkları araması gerektiğidir. Yukarıdaki örnekte, . olarak bulunan geçerli klasöre varsayılan olarak geri yüklenecektir. ;, Windows için yol ayırıcıdır; Unix tabanlı bir işletim sistemi kullanıyorsanız, bunun yerine :'u kullanmanız gerekir.

+2

doğrudur, ancak gelecekte – Kris

+7

Veya Eclipse gibi sadece bir IDE için sorunların bu tür çözmek için maven kullanmayı düşünün. Ancak, neredeyse hayal edene kadar zor yoldan öğrenmeyi sürdürmenizi tavsiye ederim. Aksi halde IDE'lerin kapakların altında nasıl çalıştığını anlamak zor olacaktır. – BalusC

+0

teşekkürler BalusC. problemi çözdü. Bir dosyayı derlediğimde bunu – Karadous

6

Bu bir JSP mi yoksa Servlet mi?

Aslında, bu iki paket java.io gibi Java'ya yerleşik değildir. Bunun yerine, Servlet yetenekli Web sunucusuyla (ör. Tomcat) birlikte gelirler. Dolayısıyla, Java derleyicisi Servlet'imizi derleyebilmeden önce, bu iki paketteki sınıfları nerede bulacağımızı bilmemiz gerekir.

Gerekli sınıflar normalde servlet.jar adlı bir dosyada saklanır. Bu dosyanın tam konumu, kullandığınız belirli Web sunucu yazılımına bağlı olacaktır, ancak Tomcat örneğinde, bunu ana Tomcat kurulum dizininin lib alt dizininde bulabilirsiniz (ör. D: \ Program Files \ Apache Group \ jakarta- erkek kedi-3.2.3 lib \ servlet.jar \). Java derleyicisinin Servletleri derleyebilmesi için, bu dosyayı Java sınıf yolunuza eklemeniz gerekir. Varsayılan olarak, Java yalnızca geçerli dizinde (".") Sınıf arar. Böylece, "." varsayılan sınıf yoludur. Windows altında ".:/Usr /.../ lib/servlet.jar" altındaki servlet.jar dosyasını (".; D: ... \ lib \ servlet.jar") içeren sınıf yolunu değiştirirseniz), daha sonra Servlet sadece iyi derlemesi gerekir.

Sen aşağıdaki gibi javac.exe çalıştırdığınızda kullanmak için bir sınıf yolu belirtebilirsiniz:

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

Veya Linux Javac kullanır: yerine;

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

+0

yapmalı mıyım? Demek istediğim, bir dosyayı derlediğim zaman sınıf yolunu ayarlamanın bir yolu var. – Karadous

+0

Dosyayı derleyebilmeniz için, * .java, servlet.jar'ın sınıf yolunda olduğundan emin olmalısınız. JSP'lerin, sonuç olarak, Java dosyaları olan servletlere çevrildiğini unutmayın. – Frankline

+0

Birisi şu tavsiyeye sahiptir: * "Windows kullanıyorsanız d: \ Program Files \ Apache Group \ jakarta-tomcat-3.2.3 \ lib \ servlet.jar; kullanıyorsanız JAVA_HOME Değişken de sihir yapar" * – Pubby

1

Sınıfyolu içine servlet-api.jar ekleyin. Tomcat'ın lib klasöründe mevcut olacak.

1

JSP ve Servlet Sunucu tarafı Programlamadır. Tomcat gibi bir Sunucu içinde yerleşik bir paket olarak geldiği gibi. Sadece yumuşak bağlantı görünüşte çalışmayan bir linux ortamında şu şekilde

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

bu ekleme olduğunu Yapılacak istiyorum

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 

bilge gibi yol olabilir. fiziksel yolu kullanmalısın. örneğin makinemde /usr/share/tomacat7/lib/servlet-api.jar adresinde bir softlink var ve bunu benim classpath argümanı olarak kullanıyorum aynı hata ile başarısız bir derleme yol açtı. bunun yerine, yumuşak bağlantının işaret ettiği dosya olan /usr/share/java/tomcat-servlet-api-3.0.jar'u kullanmak zorunda kaldım.

18

Eğer maven projesi ile çalışıyorsanız, pompanıza aşağıdaki bağımlılığı ekleyin.xml

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

Gradle eşdeğeri bağımlılıkları { derleme grubu: 'javax.servlet', ad: 'servlet-api', sürüm: '2.4'} ' – MarkHu

+0

hala benim için çalışmıyor –

+0

Bu benim için çok teşekkürler –

0

Bu, bulduğum şey. CLASSPATH olarak ortam değişkenimde /usr/local/apache-tomcat-7.0.64/lib/servlet-api.jar dosyası ekleniyor. İşletim sistemi iOS. zsh kullanıyorsanız ~/.bash_profile $CLASSPATH=/usr/local/apache-tomcat-7.0.64/lib/servlet-api.jar

:

bash kullanarak eğer ~/.zshrc ihracat CLASSPATH="usr/local/apache-tomcat-7.0.64/lib/servlet-api.jar"

Gücü o anda işe koşmak source .bash_profile (veya .zshrc) veya bir bilgisayarı yeniden başlatabilirsiniz ve mevcut kullanıcı için çalışır.

4

Bu benim için sorun çözüldü budur:

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