2012-02-08 15 views

risposta

57

È necessario aggiungere il percorso al file /lib/servlet-api.jar di Tomcat al percorso di classe tempo di compilazione.

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

Il percorso di classe è dove Java deve cercare le dipendenze importate. In caso contrario, verrà automaticamente impostato sulla cartella corrente che è inclusa come . nell'esempio precedente. Il ; è il separatore di percorso per Windows; se si utilizza un sistema operativo basato su Unix, è necessario utilizzare invece :.

+2

vero, ma in futuro considerare l'utilizzo di Maven per risolvere questo tipo di problemi per voi – Kris

+7

O semplicemente un IDE come Eclipse. Consiglierei comunque di continuare ad apprendere nel modo più duro finché non riesci quasi a sognarlo. Altrimenti sarà difficile capire come funzionano gli IDE sotto le coperte. – BalusC

+0

grazie BalusC. ha risolto il problema. – Karadous

6

È un JSP o servlet?

Bene, questi due pacchetti non sono effettivamente integrati in Java come java.io lo è. Invece, vengono forniti con il server Web con funzionalità Servlet (ad esempio Tomcat). Quindi, prima che il compilatore Java possa compilare il nostro Servlet, dobbiamo far sapere dove trovare le classi in questi due pacchetti.

Le classi richieste sono normalmente memorizzate in un file chiamato servlet.jar. La posizione esatta di questo file dipende dal particolare software del server Web che si utilizza, ma nel caso di Tomcat lo si può trovare nella sottodirectory lib della directory principale di installazione di Tomcat (ad es. D: \ Programmi \ Apache Group \ jakarta- tomcat-3.2.3 lib \ servlet.jar \). Affinché il compilatore Java possa compilare servlet, è necessario aggiungere questo file al percorso di classe Java. Per impostazione predefinita, Java cerca solo le classi nella directory corrente ("."). Quindi, "." è il percorso di classe predefinito. Se si modifica il percorso della classe per includere il file servlet.jar (".; D: ... \ lib \ servlet.jar" in Windows, ".:/Usr /.../ lib/servlet.jar" in Unix), quindi il Servlet dovrebbe compilare correttamente.

È possibile specificare un percorso di classe da utilizzare quando si esegue javac.exe come segue:

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

O in Linux javac usa: invece di;

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

+0

dovrei farlo ogni volta che compilo un file? Voglio dire c'è un modo per impostare classpath per tutto il tempo che compilo un file. – Karadous

+0

Per compilare il file i.e. * .java, è necessario assicurarsi che servlet.jar si trovi nel classpath. Nota che i JSP possono essere tradotti in servlet che sono, naturalmente, file Java. – Frankline

+0

Qualcuno ha il consiglio: * "Se stai usando Windows Aggiunta d: \ Programmi \ Apache Group \ jakarta-tomcat-3.2.3 \ lib \ servlet.jar; a JAVA_HOME Variable fa anche la magia" * – Pubby

1

Aggiungere servlet-api.jar nel classpath. Sarà disponibile nella cartella lib di Tomcat.

1

JSP e Servlet sono lato server Programmazione. Come viene fornito come pacchetto integrato all'interno di un server come Tomcat. Il percorso può essere come saggio

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 

Basta che si desidera fare è aggiungere questo nel modo seguente

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

in ambiente Linux il soft link a quanto pare non funziona. devi usare il percorso fisico. per esempio sulla mia macchina ho un collegamento software a /usr/share/tomacat7/lib/servlet-api.jar e uso questo come il mio argomento classpath ha portato a una compilazione fallita con lo stesso errore. invece ho dovuto usare /usr/share/java/tomcat-servlet-api-3.0.jar che è il file a cui puntava il soft link.

18

Se si sta lavorando con il progetto maven, aggiungere la seguente dipendenza al pom.xml

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

L'equivalente di Gradle è 'dependencies { gruppo di compilazione: 'javax.servlet', nome: 'servlet-api', versione: '2.4'}' – MarkHu

+0

continua a non funzionare per me –

+0

Questo funziona per me, molte grazie –

0

Questo è quello che ho trovato. Aggiunta di /usr/local/apache-tomcat-7.0.64/lib/servlet-api.jar nella mia variabile di ambiente come CLASSPATH. Il sistema operativo è iOS.

se si utilizza bash: ~/.bash_profile $CLASSPATH=/usr/local/apache-tomcat-7.0.64/lib/servlet-api.jar

se si utilizza zsh:/export .zshrc CLASSPATH="usr/local/apache-tomcat-7.0.64/lib/servlet-api.jar"

Forza ~ funziona in questo momento, eseguire source .bash_profile (o .zshrc) o si può riavviare il computer e funziona per l'utente corrente.

4

Questo è ciò che ha risolto il problema per me:

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