Re: Tomcat and path with pound sign (#) - ClassNotFoundException
Hi (Len), got feedback from sun today and they confirmed our findings, i.e. it's a problem known for a long time. All efforts fixing this failed due to other incompatibilities, for example see sun-bug-ids 4273532 6243815 and their relatives. The proposed software workaround is using File.toURI().toURL(). As of Java 1.4 java.io.File.toURL is (marked as) deprecated, see sun-bug-id 61794689. This leaves two options: - avoid path names with #s - or other special characters used in the http/html world but otherwise fully valid on the filesystem = i'm forced to do this until the next one has been worked on - fix/workaround this problem in tomcat = middle/long term, i'll open a bug report kind regards, Markus Quoting Len Popp [EMAIL PROTECTED]: There are a few problems caused by # in directory names, and it looks to me like they're at least partly Tomcat's fault. 1. The classloader problem that you reported: Tomcat converts file pathnames to URLs for URLClassLoader, using File.toURL which handles # poorly. This could be Sun's fault, but following a note in their docs here: http://java.sun.com/j2se/1.5.0/docs/api/java/io/File.html#toURL() I was able to fix this problem in Tomcat by calling File.toURI and then URI.toURL. (That's the workaround I referred to before.) 2. After fixing problem 1, I found that JSPs don't work because Jasper screws up the pathname of its output directory. There's some code in JspCompilationContext that concatenates directories using both URL and file syntax, truncating it at the # and using both \ and / directory separators (in Windows). It looks screwy to me, I don't see why it should be using URLs to concatenate file pathnames. 3, etc. There are several other places in Tomcat where File.toURL is used and I think it could have problems with # in pathnames, but I don't know what the effects are. So it's pretty clear to me that Tomcat could handle pathnames with # chars better. Is it worth the trouble to find and fix all the related problems, or is it simpler to tell people not to use unusual directory names? I could help fix some of the problems, but there are some that I haven't figured out. -- Len On 8/12/07, Markus Schiegl [EMAIL PROTECTED] wrote: Hi, Len Popp wrote: I'm not sure the topic is ready to be nailed shut just yet... Oh, i have no objections keeping it alive. Unfortunately my java skills are limited so reporting and testing is the best i can do to help. The problem is due to the way Tomcat converts pathnames to URLs when it uses URLClassLoader. Tomcat calls the method File.toURL and that fails when there's a # in the pathname. But the Javadoc for File.toURL suggests a workaround: Convert the pathname to a URI first, then to a URL. thanks for your confirmation. Looking through bugs.sun.com this seems to be an inherent behaviour with reports starting in 1999. So fixing it in Tomcat would be great, but i'm hesitating calling it a bug from Tomcats POV - more a feature request. @Len: Do you have a (javadoc)link for this workaround/suggestion? thx! I tried that (in ClassLoaderFactory) and it seem to fix the classloader problem. Tomcat starts up fine - but it can't compile any JSPs. So there are other components of Tomcat that have similar problems. I tried something with a similar result. Just moved CATALINA_HOME to some non-#-directory but left CATALINA_BASE as it was. This way Tomcat started but webapplications could not be deployed/did not work. So, my advice is to see how hard it would be for you to get the #s out of your pathnames. That may be easier than fixing Tomcat. I'm just waiting for some feedback from sun but avoiding #s in directory and file names in the java world is probably the way to go. Otherwise every java application must be forced to workaround this problem. And the latter is more work - if possible at all - than getting rid of #s. 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] - To start a new topic, e-mail: users@tomcat.apache.org To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: Tomcat and path with pound sign (#) - ClassNotFoundException
There are a few problems caused by # in directory names, and it looks to me like they're at least partly Tomcat's fault. 1. The classloader problem that you reported: Tomcat converts file pathnames to URLs for URLClassLoader, using File.toURL which handles # poorly. This could be Sun's fault, but following a note in their docs here: http://java.sun.com/j2se/1.5.0/docs/api/java/io/File.html#toURL() I was able to fix this problem in Tomcat by calling File.toURI and then URI.toURL. (That's the workaround I referred to before.) 2. After fixing problem 1, I found that JSPs don't work because Jasper screws up the pathname of its output directory. There's some code in JspCompilationContext that concatenates directories using both URL and file syntax, truncating it at the # and using both \ and / directory separators (in Windows). It looks screwy to me, I don't see why it should be using URLs to concatenate file pathnames. 3, etc. There are several other places in Tomcat where File.toURL is used and I think it could have problems with # in pathnames, but I don't know what the effects are. So it's pretty clear to me that Tomcat could handle pathnames with # chars better. Is it worth the trouble to find and fix all the related problems, or is it simpler to tell people not to use unusual directory names? I could help fix some of the problems, but there are some that I haven't figured out. -- Len On 8/12/07, Markus Schiegl [EMAIL PROTECTED] wrote: Hi, Len Popp wrote: I'm not sure the topic is ready to be nailed shut just yet... Oh, i have no objections keeping it alive. Unfortunately my java skills are limited so reporting and testing is the best i can do to help. The problem is due to the way Tomcat converts pathnames to URLs when it uses URLClassLoader. Tomcat calls the method File.toURL and that fails when there's a # in the pathname. But the Javadoc for File.toURL suggests a workaround: Convert the pathname to a URI first, then to a URL. thanks for your confirmation. Looking through bugs.sun.com this seems to be an inherent behaviour with reports starting in 1999. So fixing it in Tomcat would be great, but i'm hesitating calling it a bug from Tomcats POV - more a feature request. @Len: Do you have a (javadoc)link for this workaround/suggestion? thx! I tried that (in ClassLoaderFactory) and it seem to fix the classloader problem. Tomcat starts up fine - but it can't compile any JSPs. So there are other components of Tomcat that have similar problems. I tried something with a similar result. Just moved CATALINA_HOME to some non-#-directory but left CATALINA_BASE as it was. This way Tomcat started but webapplications could not be deployed/did not work. So, my advice is to see how hard it would be for you to get the #s out of your pathnames. That may be easier than fixing Tomcat. I'm just waiting for some feedback from sun but avoiding #s in directory and file names in the java world is probably the way to go. Otherwise every java application must be forced to workaround this problem. And the latter is more work - if possible at all - than getting rid of #s. 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]
Re: Tomcat and path with pound sign (#) - ClassNotFoundException
Hi, Len Popp wrote: I'm not sure the topic is ready to be nailed shut just yet... Oh, i have no objections keeping it alive. Unfortunately my java skills are limited so reporting and testing is the best i can do to help. The problem is due to the way Tomcat converts pathnames to URLs when it uses URLClassLoader. Tomcat calls the method File.toURL and that fails when there's a # in the pathname. But the Javadoc for File.toURL suggests a workaround: Convert the pathname to a URI first, then to a URL. thanks for your confirmation. Looking through bugs.sun.com this seems to be an inherent behaviour with reports starting in 1999. So fixing it in Tomcat would be great, but i'm hesitating calling it a bug from Tomcats POV - more a feature request. @Len: Do you have a (javadoc)link for this workaround/suggestion? thx! I tried that (in ClassLoaderFactory) and it seem to fix the classloader problem. Tomcat starts up fine - but it can't compile any JSPs. So there are other components of Tomcat that have similar problems. I tried something with a similar result. Just moved CATALINA_HOME to some non-#-directory but left CATALINA_BASE as it was. This way Tomcat started but webapplications could not be deployed/did not work. So, my advice is to see how hard it would be for you to get the #s out of your pathnames. That may be easier than fixing Tomcat. I'm just waiting for some feedback from sun but avoiding #s in directory and file names in the java world is probably the way to go. Otherwise every java application must be forced to workaround this problem. And the latter is more work - if possible at all - than getting rid of #s. 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]
Re: Tomcat and path with pound sign (#) - ClassNotFoundException
I'm not sure the topic is ready to be nailed shut just yet... The problem is due to the way Tomcat converts pathnames to URLs when it uses URLClassLoader. Tomcat calls the method File.toURL and that fails when there's a # in the pathname. But the Javadoc for File.toURL suggests a workaround: Convert the pathname to a URI first, then to a URL. I tried that (in ClassLoaderFactory) and it seem to fix the classloader problem. Tomcat starts up fine - but it can't compile any JSPs. So there are other components of Tomcat that have similar problems. So, my advice is to see how hard it would be for you to get the #s out of your pathnames. That may be easier than fixing Tomcat. -- Len On 8/9/07, Markus Schiegl [EMAIL PROTECTED] wrote: Hi all, just to close the topic on this mailing list: As jetty suffers from exactly the same problem i'm rather confident this is not a tomcat problem but part of the java classloader and its implementation. Next - and last - stop for confirmation: Sun :-) kind regards, Markus Alexey Solofnenko wrote: Try running bash -x catalina.sh run to see if Java is started correctly. If it is not, try running the same command from a normal directory, and run the same command yourself without using scripts provided with Tomcat. - Alexey. Markus Schiegl wrote: Hi, you're right about # as a special char for different programming languages. but nevertheless the # sign is a valid character for directory and file names (in contrast to * or / for example) for unix and windows. If it's wise to use it is another question but sometimes it's just beyond your control. The same problem (# in directory name) and error message (ClassNotFoundException) happens with Windows XP. Confirms my suspicion this beeing a Java and/or Tomcat issue. kind regards, Markus Propes, Barry L wrote: isn't that likely because in some languages like PHP, Python and Perl the # is to comment out a line, and it will invariably break the code? Because I thought some on this list were integrating Tomcat with those languages. -Original Message- From: Hassan Schroeder [mailto:[EMAIL PROTECTED] Sent: Thursday, August 09, 2007 7:58 AM To: Tomcat Users List Subject: Re: Tomcat and path with pound sign (#) - ClassNotFoundException On 8/8/07, Markus Schiegl [EMAIL PROTECTED] wrote: Has anybody been able to start a tomcat server from such a directory? I copied a working installation from /usr/local/apache-tomcat-6.0.13 to /usr/local/apache-tomcat#6.0.13, set CATALINA_HOME and got this: ./bin/catalina.sh run Using CATALINA_BASE: /usr/local/apache-tomcat#6.0.13 Using CATALINA_HOME: /usr/local/apache-tomcat#6.0.13 Using CATALINA_TMPDIR: /usr/local/apache-tomcat#6.0.13/temp Using JRE_HOME: /usr/local/jdk1.6.0_02/jre 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) So it seems a genuine limitation... HTH, - 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] - To start a new topic, e-mail: users@tomcat.apache.org To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: Tomcat and path with pound sign (#) - ClassNotFoundException
On 8/8/07, Markus Schiegl [EMAIL PROTECTED] wrote: Has anybody been able to start a tomcat server from such a directory? I copied a working installation from /usr/local/apache-tomcat-6.0.13 to /usr/local/apache-tomcat#6.0.13, set CATALINA_HOME and got this: ./bin/catalina.sh run Using CATALINA_BASE: /usr/local/apache-tomcat#6.0.13 Using CATALINA_HOME: /usr/local/apache-tomcat#6.0.13 Using CATALINA_TMPDIR: /usr/local/apache-tomcat#6.0.13/temp Using JRE_HOME: /usr/local/jdk1.6.0_02/jre 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) So it seems a genuine limitation... HTH, -- Hassan Schroeder [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]
RE: Tomcat and path with pound sign (#) - ClassNotFoundException
isn't that likely because in some languages like PHP, Python and Perl the # is to comment out a line, and it will invariably break the code? Because I thought some on this list were integrating Tomcat with those languages. -Original Message- From: Hassan Schroeder [mailto:[EMAIL PROTECTED] Sent: Thursday, August 09, 2007 7:58 AM To: Tomcat Users List Subject: Re: Tomcat and path with pound sign (#) - ClassNotFoundException On 8/8/07, Markus Schiegl [EMAIL PROTECTED] wrote: Has anybody been able to start a tomcat server from such a directory? I copied a working installation from /usr/local/apache-tomcat-6.0.13 to /usr/local/apache-tomcat#6.0.13, set CATALINA_HOME and got this: ./bin/catalina.sh run Using CATALINA_BASE: /usr/local/apache-tomcat#6.0.13 Using CATALINA_HOME: /usr/local/apache-tomcat#6.0.13 Using CATALINA_TMPDIR: /usr/local/apache-tomcat#6.0.13/temp Using JRE_HOME: /usr/local/jdk1.6.0_02/jre 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) So it seems a genuine limitation... HTH, -- Hassan Schroeder [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] - To start a new topic, e-mail: users@tomcat.apache.org To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: Tomcat and path with pound sign (#) - ClassNotFoundException
Hi, you're right about # as a special char for different programming languages. but nevertheless the # sign is a valid character for directory and file names (in contrast to * or / for example) for unix and windows. If it's wise to use it is another question but sometimes it's just beyond your control. The same problem (# in directory name) and error message (ClassNotFoundException) happens with Windows XP. Confirms my suspicion this beeing a Java and/or Tomcat issue. kind regards, Markus Propes, Barry L wrote: isn't that likely because in some languages like PHP, Python and Perl the # is to comment out a line, and it will invariably break the code? Because I thought some on this list were integrating Tomcat with those languages. -Original Message- From: Hassan Schroeder [mailto:[EMAIL PROTECTED] Sent: Thursday, August 09, 2007 7:58 AM To: Tomcat Users List Subject: Re: Tomcat and path with pound sign (#) - ClassNotFoundException On 8/8/07, Markus Schiegl [EMAIL PROTECTED] wrote: Has anybody been able to start a tomcat server from such a directory? I copied a working installation from /usr/local/apache-tomcat-6.0.13 to /usr/local/apache-tomcat#6.0.13, set CATALINA_HOME and got this: ./bin/catalina.sh run Using CATALINA_BASE: /usr/local/apache-tomcat#6.0.13 Using CATALINA_HOME: /usr/local/apache-tomcat#6.0.13 Using CATALINA_TMPDIR: /usr/local/apache-tomcat#6.0.13/temp Using JRE_HOME: /usr/local/jdk1.6.0_02/jre 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) So it seems a genuine limitation... HTH, - To start a new topic, e-mail: users@tomcat.apache.org To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: Tomcat and path with pound sign (#) - ClassNotFoundException
Try running bash -x catalina.sh run to see if Java is started correctly. If it is not, try running the same command from a normal directory, and run the same command yourself without using scripts provided with Tomcat. - Alexey. Markus Schiegl wrote: Hi, you're right about # as a special char for different programming languages. but nevertheless the # sign is a valid character for directory and file names (in contrast to * or / for example) for unix and windows. If it's wise to use it is another question but sometimes it's just beyond your control. The same problem (# in directory name) and error message (ClassNotFoundException) happens with Windows XP. Confirms my suspicion this beeing a Java and/or Tomcat issue. kind regards, Markus Propes, Barry L wrote: isn't that likely because in some languages like PHP, Python and Perl the # is to comment out a line, and it will invariably break the code? Because I thought some on this list were integrating Tomcat with those languages. -Original Message- From: Hassan Schroeder [mailto:[EMAIL PROTECTED] Sent: Thursday, August 09, 2007 7:58 AM To: Tomcat Users List Subject: Re: Tomcat and path with pound sign (#) - ClassNotFoundException On 8/8/07, Markus Schiegl [EMAIL PROTECTED] wrote: Has anybody been able to start a tomcat server from such a directory? I copied a working installation from /usr/local/apache-tomcat-6.0.13 to /usr/local/apache-tomcat#6.0.13, set CATALINA_HOME and got this: ./bin/catalina.sh run Using CATALINA_BASE: /usr/local/apache-tomcat#6.0.13 Using CATALINA_HOME: /usr/local/apache-tomcat#6.0.13 Using CATALINA_TMPDIR: /usr/local/apache-tomcat#6.0.13/temp Using JRE_HOME: /usr/local/jdk1.6.0_02/jre 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) So it seems a genuine limitation... HTH, - To start a new topic, e-mail: users@tomcat.apache.org To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] -- Alexey N. Solofnenko http://trelony.cjb.net/ Pleasant Hill, CA (GMT-8 usually) smime.p7s Description: S/MIME Cryptographic Signature
Re: Tomcat and path with pound sign (#) - ClassNotFoundException
Hi Alexey, yes it does (see message thread and different logs). i've checked with set -x and even the actual process call with ps and truss/strace. same problem if I call java directly - okay it does not log to catalina.out but to stdout... Somewhere the road while watching the truss output the open-syscalls use the wrong/truncated directory. thanks and kind regards, Markus Alexey Solofnenko wrote: Try running bash -x catalina.sh run to see if Java is started correctly. If it is not, try running the same command from a normal directory, and run the same command yourself without using scripts provided with Tomcat. - Alexey. Markus Schiegl wrote: Hi, you're right about # as a special char for different programming languages. but nevertheless the # sign is a valid character for directory and file names (in contrast to * or / for example) for unix and windows. If it's wise to use it is another question but sometimes it's just beyond your control. The same problem (# in directory name) and error message (ClassNotFoundException) happens with Windows XP. Confirms my suspicion this beeing a Java and/or Tomcat issue. kind regards, Markus Propes, Barry L wrote: isn't that likely because in some languages like PHP, Python and Perl the # is to comment out a line, and it will invariably break the code? Because I thought some on this list were integrating Tomcat with those languages. -Original Message- From: Hassan Schroeder [mailto:[EMAIL PROTECTED] Sent: Thursday, August 09, 2007 7:58 AM To: Tomcat Users List Subject: Re: Tomcat and path with pound sign (#) - ClassNotFoundException On 8/8/07, Markus Schiegl [EMAIL PROTECTED] wrote: Has anybody been able to start a tomcat server from such a directory? I copied a working installation from /usr/local/apache-tomcat-6.0.13 to /usr/local/apache-tomcat#6.0.13, set CATALINA_HOME and got this: ./bin/catalina.sh run Using CATALINA_BASE: /usr/local/apache-tomcat#6.0.13 Using CATALINA_HOME: /usr/local/apache-tomcat#6.0.13 Using CATALINA_TMPDIR: /usr/local/apache-tomcat#6.0.13/temp Using JRE_HOME: /usr/local/jdk1.6.0_02/jre 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) So it seems a genuine limitation... HTH, - 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]
Re: Tomcat and path with pound sign (#) - ClassNotFoundException
Hi all, just to close the topic on this mailing list: As jetty suffers from exactly the same problem i'm rather confident this is not a tomcat problem but part of the java classloader and its implementation. Next - and last - stop for confirmation: Sun :-) kind regards, Markus Alexey Solofnenko wrote: Try running bash -x catalina.sh run to see if Java is started correctly. If it is not, try running the same command from a normal directory, and run the same command yourself without using scripts provided with Tomcat. - Alexey. Markus Schiegl wrote: Hi, you're right about # as a special char for different programming languages. but nevertheless the # sign is a valid character for directory and file names (in contrast to * or / for example) for unix and windows. If it's wise to use it is another question but sometimes it's just beyond your control. The same problem (# in directory name) and error message (ClassNotFoundException) happens with Windows XP. Confirms my suspicion this beeing a Java and/or Tomcat issue. kind regards, Markus Propes, Barry L wrote: isn't that likely because in some languages like PHP, Python and Perl the # is to comment out a line, and it will invariably break the code? Because I thought some on this list were integrating Tomcat with those languages. -Original Message- From: Hassan Schroeder [mailto:[EMAIL PROTECTED] Sent: Thursday, August 09, 2007 7:58 AM To: Tomcat Users List Subject: Re: Tomcat and path with pound sign (#) - ClassNotFoundException On 8/8/07, Markus Schiegl [EMAIL PROTECTED] wrote: Has anybody been able to start a tomcat server from such a directory? I copied a working installation from /usr/local/apache-tomcat-6.0.13 to /usr/local/apache-tomcat#6.0.13, set CATALINA_HOME and got this: ./bin/catalina.sh run Using CATALINA_BASE: /usr/local/apache-tomcat#6.0.13 Using CATALINA_HOME: /usr/local/apache-tomcat#6.0.13 Using CATALINA_TMPDIR: /usr/local/apache-tomcat#6.0.13/temp Using JRE_HOME: /usr/local/jdk1.6.0_02/jre 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) So it seems a genuine limitation... HTH, - 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]
Re: Tomcat and path with pound sign (#) - ClassNotFoundException
In ANT we are using our own URL encoding, because Java one does not [always] work correctly in some cases. I guess it could be happening here too (possibly when creating new URLClassLoaderes). Anyway, there are Tomcat sources available. Feel free fixing them and submitting the patch. See http://www.cenqua.com/fisheye/demo/browse/ant/src/main/org/apache/tools/ant/launch/Locator.java . - Alexey. Markus Schiegl wrote: Hi Alexey, yes it does (see message thread and different logs). i've checked with set -x and even the actual process call with ps and truss/strace. same problem if I call java directly - okay it does not log to catalina.out but to stdout... Somewhere the road while watching the truss output the open-syscalls use the wrong/truncated directory. thanks and kind regards, Markus Alexey Solofnenko wrote: Try running bash -x catalina.sh run to see if Java is started correctly. If it is not, try running the same command from a normal directory, and run the same command yourself without using scripts provided with Tomcat. - Alexey. Markus Schiegl wrote: Hi, you're right about # as a special char for different programming languages. but nevertheless the # sign is a valid character for directory and file names (in contrast to * or / for example) for unix and windows. If it's wise to use it is another question but sometimes it's just beyond your control. The same problem (# in directory name) and error message (ClassNotFoundException) happens with Windows XP. Confirms my suspicion this beeing a Java and/or Tomcat issue. kind regards, Markus Propes, Barry L wrote: isn't that likely because in some languages like PHP, Python and Perl the # is to comment out a line, and it will invariably break the code? Because I thought some on this list were integrating Tomcat with those languages. -Original Message- From: Hassan Schroeder [mailto:[EMAIL PROTECTED] Sent: Thursday, August 09, 2007 7:58 AM To: Tomcat Users List Subject: Re: Tomcat and path with pound sign (#) - ClassNotFoundException On 8/8/07, Markus Schiegl [EMAIL PROTECTED] wrote: Has anybody been able to start a tomcat server from such a directory? I copied a working installation from /usr/local/apache-tomcat-6.0.13 to /usr/local/apache-tomcat#6.0.13, set CATALINA_HOME and got this: ./bin/catalina.sh run Using CATALINA_BASE: /usr/local/apache-tomcat#6.0.13 Using CATALINA_HOME: /usr/local/apache-tomcat#6.0.13 Using CATALINA_TMPDIR: /usr/local/apache-tomcat#6.0.13/temp Using JRE_HOME: /usr/local/jdk1.6.0_02/jre 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) So it seems a genuine limitation... HTH, - 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] -- Alexey N. Solofnenko http://trelony.cjb.net/ Pleasant Hill, CA (GMT-8 usually) smime.p7s Description: S/MIME Cryptographic Signature
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(0x, 0, 0xCFCA9CD8, 0x) = 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(0x, 0, 0xCFCA9CD8, 0x) = 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]
Re: Tomcat and path with pound sign (#) - ClassNotFoundException
Are you allowed to create symbolic links with normal names? - Alexey. Markus Schiegl wrote: 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(0x, 0, 0xCFCA9CD8, 0x) = 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(0x, 0, 0xCFCA9CD8, 0x) = 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] -- Alexey N. Solofnenko http://trelony.cjb.net/ Pleasant Hill, CA (GMT-8 usually) smime.p7s Description: S/MIME Cryptographic Signature
RE: Tomcat and path with pound sign (#) - ClassNotFoundException
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(0x, 0, 0xCFCA9CD8, 0x) = 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(0x, 0, 0xCFCA9CD8, 0x) = 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]
Re: Tomcat and path with pound sign (#) - ClassNotFoundException
Hi, being root (for these tests) should give me enough permissions. I have no problems creating sym-links at all (with or without #) although my test-case involves no symbolic links. Any specific test? kind regards, Markus Alexey Solofnenko wrote: Are you allowed to create symbolic links with normal names? - Alexey. Markus Schiegl wrote: 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(0x, 0, 0xCFCA9CD8, 0x) = 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(0x, 0, 0xCFCA9CD8, 0x) = 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]
Re: Tomcat and path with pound sign (#) - ClassNotFoundException
Hi, as far as i see the shell has no problems passing the # character. I've added ps auxwww |grep java after the java call in catalina.sh, just to verify the java-program itself is called with the correct values, see below: $ ~/tomcat#1/apache-tomcat-6.0.13/bin$ ./startup.sh Using CATALINA_BASE: /export/home/markus/tomcat#1/apache-tomcat-6.0.13 Using CATALINA_HOME: /export/home/markus/tomcat#1/apache-tomcat-6.0.13 Using CATALINA_TMPDIR: /export/home/markus/tomcat#1/apache-tomcat-6.0.13/temp Using JRE_HOME: /usr/java markus2877 0.6 1.842428 8964 pts/1R 23:20:06 0:00 /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 $ ~/tomcat#1/apache-tomcat-6.0.13/bin$ pwd /export/home/markus/tomcat#1/apache-tomcat-6.0.13/bin $ ~/tomcat#1/apache-tomcat-6.0.13/bin$ thanks! kind regards, Markus P.S shell commands with # between or after other characters are ok, e.g. $ echo bla # 1 bla $ echo bla#1 bla#1 $ echo bla# bla# Fargusson.Alan wrote: 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(0x, 0, 0xCFCA9CD8, 0x) = 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
Re: Tomcat and path with pound sign (#) - ClassNotFoundException
Why not just change it to /export/home/markus/tomcat_1 or something and be done with it. Is trying to make it work with a # really worth the time an effort? Think in terms of hours spent * hourly rate or hour spent that you could be doing something else. Just my opinion. On 8/8/07, Markus Schiegl [EMAIL PROTECTED] wrote: Hi, as far as i see the shell has no problems passing the # character. I've added ps auxwww |grep java after the java call in catalina.sh, just to verify the java-program itself is called with the correct values, see below: $ ~/tomcat#1/apache-tomcat-6.0.13/bin$ ./startup.sh Using CATALINA_BASE: /export/home/markus/tomcat#1/apache-tomcat-6.0.13 Using CATALINA_HOME: /export/home/markus/tomcat#1/apache-tomcat-6.0.13 Using CATALINA_TMPDIR: /export/home/markus/tomcat#1/apache-tomcat-6.0.13/temp Using JRE_HOME: /usr/java markus2877 0.6 1.842428 8964 pts/1R 23:20:06 0:00 /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 $ ~/tomcat#1/apache-tomcat-6.0.13/bin$ pwd /export/home/markus/tomcat#1/apache-tomcat-6.0.13/bin $ ~/tomcat#1/apache-tomcat-6.0.13/bin$ thanks! kind regards, Markus P.S shell commands with # between or after other characters are ok, e.g. $ echo bla # 1 bla $ echo bla#1 bla#1 $ echo bla# bla# Fargusson.Alan wrote: 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
Re: Tomcat and path with pound sign (#) - ClassNotFoundException
Hi Ben, this is exactly the question. As these directories are created and used by other software changing the # sign to something else involves modifications to these programs and therefore hours/days of work too. I've decided to put in a few hours to evaluate the situation before making a conclusion. Can anybody confirm the #-sign is a reserved char (maybe because the classloader is a URL-Classloader and #'s in URLs are used for anchors) for tomcat - but not for java itself anymore? Even if it's a tomcat bug but would be marked as will not fix for whatever reasons i'm fine. Just want to have all available informations/ statements before i open bug report. Has anybody been able to start a tomcat server from such a directory? kind regards, Markus ben short wrote: Why not just change it to /export/home/markus/tomcat_1 or something and be done with it. Is trying to make it work with a # really worth the time an effort? Think in terms of hours spent * hourly rate or hour spent that you could be doing something else. Just my opinion. On 8/8/07, Markus Schiegl [EMAIL PROTECTED] wrote: Hi, as far as i see the shell has no problems passing the # character. I've added ps auxwww |grep java after the java call in catalina.sh, just to verify the java-program itself is called with the correct values, see below: $ ~/tomcat#1/apache-tomcat-6.0.13/bin$ ./startup.sh Using CATALINA_BASE: /export/home/markus/tomcat#1/apache-tomcat-6.0.13 Using CATALINA_HOME: /export/home/markus/tomcat#1/apache-tomcat-6.0.13 Using CATALINA_TMPDIR: /export/home/markus/tomcat#1/apache-tomcat-6.0.13/temp Using JRE_HOME: /usr/java markus2877 0.6 1.842428 8964 pts/1R 23:20:06 0:00 /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 $ ~/tomcat#1/apache-tomcat-6.0.13/bin$ pwd /export/home/markus/tomcat#1/apache-tomcat-6.0.13/bin $ ~/tomcat#1/apache-tomcat-6.0.13/bin$ thanks! kind regards, Markus P.S shell commands with # between or after other characters are ok, e.g. $ echo bla # 1 bla $ echo bla#1 bla#1 $ echo bla# bla# Fargusson.Alan wrote: 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