A AG Medlem sedan mars 2000 1 266 inlägg Frågan 10 jan. 2005 20:20 #1 Har precis installerat Tomcat 5,5 på en Win XP maskin med JDK5.
Dock har jag några frågor, mest allmänt med installation på XP.
1. I xp hur lägger jag till kataloger till classpath, så jag kan kömpiliera filer.
2. Om jag skall installera mysql driver i java, skall jag bara lägga den i bin, eller måsta jag här peka om i classpath?
tack
Andreas
J Jon Medlem sedan juli 2001 1 304 inlägg J jme Medlem sedan maj 2001 2 237 inlägg control panel:System(?) och sedan väljer du "environment variables"
1.
I den undre delen lägger du till CLASSPATH och sedan sökvägarna till katalogerna, saparerade med ; glöm inte att lägga till .; som hänvisar till nuvarande katalog.
2. För att Tomcat skall hitta MySQl drivern, så lägg den i Tomcat/common/lib
För att själv kunna kompilera kod, där du använder dig utav drivern, så lägger du till samma sökväg till CLASSPATH.
Glöm inte att lägga till sökvägen för javac.exe och java.exe, denna gång i PATH. T ex c:\path_to_java\bin
Lägg till sökvägen c:\path_to_java\lib i CLASSPATH.
spango Medlem sedan juni 2000 8 205 inlägg
jme skrev:
2. För att Tomcat skall hitta MySQl drivern, så lägg den i Tomcat/common/lib
För att själv kunna kompilera kod, där du använder dig utav drivern, så lägger du till samma sökväg till CLASSPATH.
Värt att notera är att drivern normalt inte behöver finnas i classpathen när man kompilerar, bara när man kör, eftersom man oftast laddar klassen dynamiskt (med Class.forName) och sedan bara refererar till den via interfaces i java(x).sql :)
J jme Medlem sedan maj 2001 2 237 inlägg Men för att kompileraren ska hitta klassen, så måste den väl ha en sökväg?
A AG Medlem sedan mars 2000 1 266 inlägg Får tyvärr fel när jag försöker kompilera ett enkelt HelloWorld-program, "javac HelloWorld.java"
Felet jag får är:
javac är inte ett internt kommando, externt kommando, program eller kommandofil.
Jag misstänker att felet ligger i min classpath/path.
Båda är placerade i Miljövariabler -> Systemvariabler
Denna lade jag till:
CLASSPATH:
c:\Tomcat 5.5\webapps\bjsg\;c:\Tomcat 5.5\common\bin\mysql-connector-java-3.1.6\;c:\program\sun\java\jdk1.5.0_01\lib;
Denna uppdaterade jag:
Path:
%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program\ATI Technologies\ATI Control Panel;c:\program\sun\java\jdk1.5.0_01\bin;
tack
Andreas
spango Medlem sedan juni 2000 8 205 inlägg
jme skrev:
Men för att kompileraren ska hitta klassen, så måste den väl ha en sökväg?
Nope. Klassen behöver ju aldrig kommas åt under kompileringen. Som sagt, den laddas dynamiskt med forName, och alla instanser av den hanteras ändå bara med olika standardinterface. javac vet inte vad det är för sorts objekt som kommer fram från DriverManager.getConnection (eller vad som nu används), så den ser aldrig någon anledning att ladda MySQL:s driver-klass.
AG » Det är din path som är fel. Är sökvägen till Javas bin-katalog rätt?
A AG Medlem sedan mars 2000 1 266 inlägg Efter att ha ändrat path som du sa spango så fungerade det, ett tag.
Nu får jag felet:
HTTP Status 404 - /bjsg/
--------------------------------------------------------------------------------
type Status report
message /bjsg/
description The requested resource (/bjsg/) is not available.
--------------------------------------------------------------------------------
Apache Tomcat/5.5.4
stdout-loggen skriver ut:
2005-jan-22 21:05:23 org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-8080
2005-jan-22 21:05:23 org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 1782 ms
2005-jan-22 21:05:23 org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
2005-jan-22 21:05:23 org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/5.5.4
2005-jan-22 21:05:23 org.apache.catalina.core.StandardHost start
INFO: XML validation disabled
2005-jan-22 21:05:24 org.apache.tomcat.util.digester.Digester endElement
ALLVARLIG: End event threw exception
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
....bottaget överflöd
Caused by: java.lang.IllegalArgumentException: Servlet mapping specifies an unknown servlet name invoker
at org.apache.catalina.core.StandardContext.addServletMapping(StandardContext.java:2223)
at org.apache.catalina.core.StandardContext.addServletMapping(StandardContext.java:2203)
... 38 more
2005-jan-22 21:05:24 org.apache.catalina.startup.ContextConfig applicationWebConfig
ALLVARLIG: Parse error in application web.xml
java.lang.IllegalArgumentException: Servlet mapping specifies an unknown servlet name invoker
at org.apache.tomcat.util.digester.Digester.createSAXException(Digester.java:2719)
at org.apache.tomcat.util.digester.Digester.createSAXException(Digester.java:2745)
at org.apache.tomcat.util.digester.Digester.endElement(Digester.java:1060)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:633)
at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.endNamespaceScope(XMLDTDValidator.java:2108)
at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.handleEndElement(XMLDTDValidator.java:2059)
at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.endElement(XMLDTDValidator.java:932)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1241)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1685)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:368)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:834)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1242)
at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1561)
at org.apache.catalina.startup.ContextConfig.applicationWebConfig(ContextConfig.java:302)
at org.apache.catalina.startup.ContextConfig.start(ContextConfig.java:955)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:249)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4012)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1003)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:718)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1003)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:437)
at org.apache.catalina.core.StandardService.start(StandardService.java:450)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:2010)
at org.apache.catalina.startup.Catalina.start(Catalina.java:537)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:271)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:409)
2005-jan-22 21:05:24 org.apache.catalina.startup.ContextConfig applicationWebConfig
ALLVARLIG: Occurred at line 16 column 23
2005-jan-22 21:05:24 org.apache.catalina.startup.ContextConfig start
ALLVARLIG: Marking this application unavailable due to previous error(s)
2005-jan-22 21:05:24 org.apache.catalina.core.StandardContext start
ALLVARLIG: Error getConfigured
2005-jan-22 21:05:24 org.apache.catalina.core.StandardContext start
ALLVARLIG: Context startup failed due to previous errors
2005-jan-22 21:05:26 org.apache.catalina.core.ApplicationContext log
INFO: org.apache.webapp.balancer.BalancerFilter: init(): ruleChain: [org.apache.webapp.balancer.RuleChain: [org.apache.webapp.balancer.rules.URLStringMatchRule: Target string: News / Redirect URL: [url]http://www.cnn.com[/url]], [org.apache.webapp.balancer.rules.RequestParameterRule: Target param name: paramName / Target param value: paramValue / Redirect URL: [url]http://www.yahoo.com[/url]], [org.apache.webapp.balancer.rules.AcceptEverythingRule: Redirect URL: [url]http://jakarta.apache.org[/url]]]
2005-jan-22 21:05:26 org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: contextInitialized()
2005-jan-22 21:05:26 org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: contextInitialized()
2005-jan-22 21:05:26 org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: contextInitialized()
2005-jan-22 21:05:26 org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: contextInitialized()
2005-jan-22 21:05:27 org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-8080
2005-jan-22 21:05:28 org.apache.jk.common.ChannelSocket init
INFO: JK2: ajp13 listening on /0.0.0.0:8009
2005-jan-22 21:05:28 org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/40 config=null
2005-jan-22 21:05:28 org.apache.catalina.startup.Catalina start
INFO: Server startup in 4667 ms
2005-jan-22 21:09:09 org.apache.catalina.core.ApplicationContext log
INFO: InvokerFilter(ApplicationFilterConfig[name=Path Mapped Filter, filterClass=filters.ExampleFilter]): 10 milliseconds
Andreas
spango Medlem sedan juni 2000 8 205 inlägg
AG skrev:
Efter att ha ändrat path som du sa spango så fungerade det, ett tag.
Nu får jag felet:
stdout-loggen skriver ut:
[i]*** snip[/i]
ALLVARLIG: Parse error in application web.xml
java.lang.IllegalArgumentException: Servlet mapping specifies an unknown servlet name invoker
at org.apache.tomcat.util.digester.Digester.createSAXException(Digester.java:2719)
at org.apache.tomcat.util.digester.Digester.createSAXException(Digester.java:2745)
[i]*** snip[/i]
Jahopp... och hur ser web.xml ut, då?
A AG Medlem sedan mars 2000 1 266 inlägg Den i /conf/, se bifogad fil.
Nedan är den som listas i katalog bjsg
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>Welcome to Tomcat</display-name>
<description>
Welcome to Tomcat
</description>
<servlet-mapping>
<servlet-name>invoker</servlet-name>
<url-pattern>/servlet/*</url-pattern>
</servlet-mapping>
</web-app>
Andreas
J jme Medlem sedan maj 2001 2 237 inlägg Du ska nog, förutom <servlet-mapping>...</servlet-mapping> också ha:
<servlet>
<servlet-name>invoker</servlet>
<servlet-class>Invoker (dvs namnet på klassen</servlet-class>
</servlet>
A AG Medlem sedan mars 2000 1 266 inlägg jme, menar du att jag skall namnge varje klass. Har inte gjort det på tidgare versioner, men det har fungerat.
tack
Andreas