2012-09-18 23 views
22

ho fatto le seguenti impostazioni per eseguire un progetto web di Java ma in qualche modo il mio Tomcat non parte da Eclipse:Tomcat non si avvia

JAVA_HOME : C:\Program Files\Java\jdk1.6.0_03 
PATH : C:\Program Files\Java\jdk1.6.0_03\bin 
CATALINA_HOME : D:\javaworkspaces\apache-tomcat-7.0.27 

Poi, come è necessario, io configurare un nuovo server da Eclipse e fornire il percorso di installazione di Tomcat.

Come consigliato in alcuni forum, ho aggiunto tomcat-juli.jar al percorso della classe.
Nonostante ciò, quando provo ad avviare Tomcat Server, ottengo l'errore non appena si avvia Tomcat in 45 secondi.

ricevo il seguente messaggio di registro:

Jul 26, 2012 5:49:34 PM org.apache.catalina.core.AprLifecycleListener init 
INFO: The APR based Apache Tomcat Native library which allows optimal performance in  production environments was not found on the java.library.path: C:\Program Files\Java\jre6\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files/Java/jre7/bin/client;C:/Program Files/Java/jre7/bin;C:/Program Files/Java/jre7/lib/i386;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\TortoiseSVN\bin;C:\Program Files\Java\jdk1.6.0_03\bin;D:\eclipse-jee-indigo-SR2-win32\eclipse;;. 
Jul 26, 2012 5:49:34 PM org.apache.tomcat.util.digester.SetPropertiesRule 
begin 
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property   'source' to 'org.eclipse.jst.j2ee.server:JEE_Day01' did not find a matching property. 
Jul 26, 2012 5:49:34 PM org.apache.coyote.AbstractProtocol init 
INFO: Initializing ProtocolHandler ["http-bio-80"] 
Jul 26, 2012 5:49:35 PM org.apache.coyote.AbstractProtocol init 
INFO: Initializing ProtocolHandler ["ajp-bio-8009"] 
Jul 26, 2012 5:49:35 PM org.apache.coyote.AbstractProtocol init 
SEVERE: Failed to initialize end point associated with ProtocolHandler ["ajp-bio-8009"] 
java.net.BindException: Address already in use: JVM_Bind <null>:8009 
at org.apache.tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.java:393) 
at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:566) 
at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:417) 
at org.apache.catalina.connector.Connector.initInternal(Connector.java:956) 
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102) 
at org.apache.catalina.core.StandardService.initInternal(StandardService.java:559) 
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102) 
at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:814) 
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102) 
at org.apache.catalina.startup.Catalina.load(Catalina.java:624) 
at org.apache.catalina.startup.Catalina.load(Catalina.java:649) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:281) 
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:449) 
Caused by: java.net.BindException: Address already in use: JVM_Bind 
at java.net.PlainSocketImpl.socketBind(Native Method) 
at java.net.PlainSocketImpl.bind(Unknown Source) 
at java.net.ServerSocket.bind(Unknown Source) 
at java.net.ServerSocket.<init>(Unknown Source) 
at java.net.ServerSocket.<init>(Unknown Source) 
at org.apache.tomcat.util.net.DefaultServerSocketFactory.createSocket(DefaultServerSocketFactory.java:49) 
at org.apache.tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.java:380) 
... 16 more 
Jul 26, 2012 5:49:35 PM org.apache.catalina.core.StandardService initInternal  
    SEVERE: Failed to initialize connector [Connector[AJP/1.3-8009]] 
org.apache.catalina.LifecycleException: Failed to initialize component [Connector[AJP/1.3-8009]] 
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:106) 
    at org.apache.catalina.core.StandardService.initInternal(StandardService.java:559) 
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102) 
at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:814) 
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102) 
at org.apache.catalina.startup.Catalina.load(Catalina.java:624) 
at org.apache.catalina.startup.Catalina.load(Catalina.java:649) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:281) 
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:449) 
Caused by: org.apache.catalina.LifecycleException: Protocol handler initialization failed 
at org.apache.catalina.connector.Connector.initInternal(Connector.java:958) 
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102) 
... 12 more 

ho fatto riferimento più forum, ma sto male bloccato con la situazione. Per favore guidami.

risposta

22

queste righe:

SEVERE: Failed to initialize end point associated with ProtocolHandler ["ajp-bio-8009"] 
java.net.BindException: Address already in use: JVM_Bind <null>:8009 

implicare che c'è già un servizio in esecuzione sulla porta 8009. Esiste già un tomcat (con ajp) in esecuzione?

se il servizio in esecuzione su 8009 è necessario è possibile modificare la configurazione del connettore in server.xml a qualcosa di simile di seguito:

<Connector port="8089" protocol="AJP/1.3" redirectPort="8443" /> 
+0

thanx ..it ha funzionato – user1649415

10

Si dice che il numero di porta 8009 è già occupata da un altro processo in esecuzione sul sistema operativo try searching for that process and stop it o fare il vostro gatto per l'esecuzione su porta diversa (gratuito)

+0

thanx a ton..at last it works – user1649415

5

java.net.BindException: Indirizzo già in uso: JVM_Bind: 8009

Ciò significa che alcuni altri processi stanno già utilizzando questa porta. Potrebbe essere un'altra istanza di Tomcat?

0

Prova: http: // localhost: 8089 se non è lavorato (o) Prova questo: Set: JRE_HOME: C: \ Program Files \ Java \ jre1.5.0_11 (dipende dalla vostra versione di JRE) e aggiungi C: \ Programmi \ Java \ jre1.5.0_11 (dipende dalla tua versione di JRE) \ bin sul percorso Eclipse-> vai alle preferenze di Windows: server-> RuntimeEnvironment rimuovi il server e fa riferimento e aggiungi nuovo TomcatServer

0

TIL: Qualcun altro su un server può avviare IIS sulla porta 80 e non dirlo a nessuno.
Se il tomcat è configurato per la stessa porta, verrà segnalato anche questo errore.
La porta su IIS o tomcat dovrà essere modificata.

Per modificare la porta in IIS:
Strumenti di amministrazione | Gestore di Internet Information Services (IIS)
Fare clic con il pulsante destro del mouse sul sito Web predefinito | Modifica binding ... Cambia porta

OPPURE

Per modificare la porta in Tomcat:
Aprire conf \ server.xml e aggiornare il valore della porta nel tag:

<Connector port="80" protocol="HTTP/1.1" 
    connectionTimeout="20000" 
    redirectPort="8443" 
    URIEncoding="UTF-8"/> 

Riavviare Tomcat

godere di 2 servizi web.

6

uccidere il rispettivo (in ascolto) processo su questa porta vale a dire 8009 uso

netstat -a -o -n

a cercare il PID del processo. Potrebbe essere qualcosa di simile a questo TCP [::]: 8009 [::]: 0 ASCOLTO 892

utilizzare il comando taskkill per terminare il processo. esempio:

taskkill /F /PID 892

+0

per terminare il processo, potresti aver bisogno dei diritti di amministratore. Per farlo, cerca "cmd" nella casella di ricerca di Start di Windows, fai clic con il pulsante destro del mouse su "cmd.exe" e scegli "apri come amministratore" –

0

Qualcos'altro utilizza la porta 8009

O spegnere la cosa che utilizza 8009 o modificare la server.xml per usare un'altra porta di 8009

0

Generalmente ciò accade se la porta Connector/shutdown del tomcat è già in uso. In primo luogo, eseguire lo shutdown.bat (A volte ci manca che un'istanza del gatto è già in esecuzione) Avanti, nel prompt dei comandi di esecuzione

netstat -aon | findstr 0.0:<your port number which is giving bind exception> 

Per ottenere il PID dell'applicazione che sta utilizzando il vostro porta. O uccidere che l'applicazione o usare qualche altra porta che non è elencato quando si esegue

netstat -a -o -n 
2

Non dovrebbe essere necessario modificare la server.port per risolvere questo problema ...

Mac/Unix/Utenti Linux: se dopo il riavvio di Tomcat, il problema persiste, è probabile che Tomcat sia stato arrestato in modo errato e che siano ancora associate risorse che ora sono bloccate. Potete vedere i PID di tali risorse eseguendo questo comando:

lsof | grep tomcat 

Terminare quei processi utilizzando:

kill -15 <PID> 

Questo dovrebbe risolvere il problema.

Uso della uccisione -15 comando TERM (-15) processo piuttosto che SIGKILL (-9) è preferibile. L'opzione -15 invia al processo il segnale per iniziare le fasi di spegnimento e pulire le risorse limitate.