The # character starts a comment in the shell.  Try quoting the pathname, or 
put a \ in front of the #.

I would bet that your mkdir and cd commands didn't do what you think they did.

-----Original Message-----
From: Markus Schiegl [mailto:[EMAIL PROTECTED]
Sent: Wednesday, August 08, 2007 1:54 PM
To: users@tomcat.apache.org
Subject: Tomcat and path with pound sign (#) -> ClassNotFoundException


Hi there,

starting Tomcat from a path containing a pound sign (#) somewhere
results in a ClassNotFoundException.

I've checked this with
- Solaris Sparc/X86 + Mac OS X
- Java 5 + 6
- Tomcat 5.5.23 + 6.0.13

example:
- mkdir /export/home/markus/tomcat#1
- extract tomcat within this directory
- export JAVA_HOME=/usr/java (JDK 6)
- /export/home/markus/tomcat#1/apache-tomcat-6.0.13/bin/startup.sh
  or
  cd /export/home/markus/tomcat#1/apache-tomcat-6.0.13/bin ; ./startup.sh

output from catalina.sh with the java call (added set -x to catalina.sh
- i.e. no problem of the calling script omitting something)

/usr/java/bin/java
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.util.logging.config.file=/export/home/markus/tomcat#1/apache-tomcat-6.0.13/conf/logging.properties
-Djava.endorsed.dirs=/export/home/markus/tomcat#1/apache-tomcat-6.0.13/endorsed
-classpath
:/export/home/markus/tomcat#1/apache-tomcat-6.0.13/bin/bootstrap.jar:/export/home/markus/tomcat#1/apache-tomcat-6.0.13/bin/commons-logging-api.jar
-Dcatalina.base=/export/home/markus/tomcat#1/apache-tomcat-6.0.13
-Dcatalina.home=/export/home/markus/tomcat#1/apache-tomcat-6.0.13
-Djava.io.tmpdir=/export/home/markus/tomcat#1/apache-tomcat-6.0.13/temp
org.apache.catalina.startup.Bootstrap start

$cat catalina.out
java.lang.ClassNotFoundException: org.apache.catalina.startup.Catalina
        at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
        at org.apache.catalina.startup.Bootstrap.init(Bootstrap.java:215)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:390)


truss output: path was truncated after the # sign:

...
2717/2:         read(5, "CAFEBABE\0\0\0 1\00701\0".., 142)      = 142
2717/2:
stat64("/export/home/markus/tomcat#1/apache-tomcat-6.0.13/bin/org/apache/catalina/security/SecurityClassLoad.class",
0xD230ABF0) Err#2 ENOENT
2717/2:         llseek(9, 1422, SEEK_SET)                       = 1422
2717/2:         read(9, " P K0304\n\0\0\0\b\0F91C".., 30)       = 30
2717/2:         llseek(9, 1504, SEEK_SET)                       = 1504
2717/2:         read(9, "95 W k o14 U18 ~ f [DAC3".., 1634)     = 1634
2717/2:         brk(0x08172F08)                                 = 0
2717/2:         brk(0x08176F08)                                 = 0
2717/9:         pollsys(0x00000000, 0, 0xCFCA9CD8, 0x00000000)  = 0
2717/2:
stat64("/export/home/markus/tomcat#1/apache-tomcat-6.0.13/bin/org/apache/catalina/startup/Catalina.class",
0xD230B3D0) Err#2 ENOENT
2717/2:         stat64("/export/home/markus/tomcat", 0xD230AA60) Err#2
ENOENT
2717/2:         stat64("/export/home/markus/tomcat", 0xD230AA60) Err#2
ENOENT
2717/2:         stat64("/export/home/markus/tomcat", 0xD230AA60) Err#2
ENOENT
2717/2:         stat64("/export/home/markus/tomcat", 0xD230AA60) Err#2
ENOENT
2717/3:         lwp_cond_wait(0x0806F7A0, 0x0806F788, 0xD208DB48, 0)
(sleeping...)
2717/3:         lwp_cond_wait(0x0806F7A0, 0x0806F788, 0xD208DB48, 0)
Err#62 ETIME
2717/9:         pollsys(0x00000000, 0, 0xCFCA9CD8, 0x00000000)  = 0
2717/2:         stat64("/export/home/markus/tomcat", 0xD230AA60) Err#2
ENOENT
2717/2:         stat64("/export/home/markus/tomcat", 0xD230AA60) Err#2
ENOENT
2717/2:         stat64("/export/home/markus/tomcat", 0xD230AA60) Err#2
ENOENT
...

Although there is a rather old but maybe similar bug at:
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4231042
i supose somewhere the road this has been fixed, as i have no problems
with JAVA 5/6 and other java programs otherwise my tests where flawed.

Installing the jdk in such a directory (e.g. /opt/java#6) works with
tomcat, too.

Can anybody confirm that "#" is still a special character (for tomcat)?
Unfortunately i'm somewhat forced to place tomcat installations/
instances into such (with #) directories.

Any fix possible?

thanks in advance!

kind regards,
   Markus


---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to