2013-08-21 9 views
6

JAVA_OPTS環境変数を使用して複数のシステムプロパティをTomcat 6に渡す必要があります。私はスペースを含む、システムのプロパティを渡すように見えることはできません:私はSOに周りを見回したと答えが助けていないようだJAVA_OPTSを介してTomcatにスペースを含むシステムプロパティを渡す

Using CATALINA_BASE: /root/apache-tomcat-6.0.37 
Using CATALINA_HOME: /root/apache-tomcat-6.0.37 
Using CATALINA_TMPDIR: /root/apache-tomcat-6.0.37/temp 
Using JRE_HOME:  /root/jre1.6.0_34/ 
Using CLASSPATH:  /root/apache-tomcat-6.0.37/bin/bootstrap.jar 
Exception in thread "main" java.lang.NoClassDefFoundError: with 
Caused by: java.lang.ClassNotFoundException: with 
     at java.net.URLClassLoader$1.run(Unknown Source) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(Unknown Source) 
     at java.lang.ClassLoader.loadClass(Unknown Source) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
     at java.lang.ClassLoader.loadClass(Unknown Source) 
Could not find the main class: with. Program will exit. 

JRE_HOME=/root/jre1.6.0_34/ JAVA_OPTS="-DsysProp1=foo -DsysProp2=bar with spaces" ./catalina.sh run 

がで失敗します。これらのすべてを成功させずに試しました。

JRE_HOME=/root/jre1.6.0_34/ JAVA_OPTS="-DsysProp1=foo -DsysProp2=\"bar with spaces\"" ./catalina.sh run 

JRE_HOME=/root/jre1.6.0_34/ JAVA_OPTS='-DsysProp1=foo -DsysProp2="bar with spaces"' ./catalina.sh run 

JRE_HOME=/root/jre1.6.0_34/ JAVA_OPTS='-DsysProp1=foo -DsysProp2=bar\ with\ spaces' ./catalina.sh run 
+1

cataline.shスクリプトを表示できますか?たぶん問題はそのスクリプトの中にあるかもしれません –

+1

catalina.shはTomcatの起動スクリプトですので、変更したくありません。あなたはそれをここで見ることができます:http://svn.apache.org/repos/asf/tomcat/tc6.0.x/tags/TOMCAT_6_0_34/bin/catalina.sh – AlexBrand

+0

私はすべてのあなたのパスが心配です'/ root'の下に - あなたがrootユーザーとしてTomcatを実行していないことを願っています。 –

答えて

3

このページでは、詳細な質問に答えます。これは、あなたが何かを引用する必要はありませんので、最初は値としてその後、プロパティ名とすべてのもののように記号、コロンまたはスペースを等しくする前に、それは単純にすべてのものを取る標準java.util.Properties形式のファイルです:

sysProp2=bar with spaces 

の場合あなたは、あなたが別の場所にコピーすることができ、そのファイルを直接変更(あるいはしたくない)コピーを編集して、そこからあなたの特性をロードするためにJAVA_OPTS

-Dcatalina.config=file:/path/to/copy/of/catalina.properties 

を渡すことはできません。

+0

あなたは 'catalina.properties'に書くべきものの正確な例を挙げることができますか? –

+0

@ElliottB私はいくつかの詳細を追加しました。標準のプロパティファイルなので、引用は必要ありません。 –

+0

私はcatalina.propertiesで次の行を試しましたが、何の効果もありません。私はラインにもゴミを追加しようとしましたが、それはTomcatによって無視されるようです。 '-Djavax.sound.sampled.SourceDataLine =#Nvidia [plughw:0,0]' –

0

いいえ。実際のスクリプトへのリンクを提供してくれてありがとう。ここ はcatalina.shが何をするかです:

exec "$_RUNJAVA" "$LOGGING_CONFIG" $JAVA_OPTS $CATALINA_OPTS # ... more stuff 

だからあなたが何でスペースで分割されないことになるだろう。 catalina.shファイルを変更せずに修正する方法はありません。あなたが代わりにJAVA_OPTSを使用してのconf/catalina.propertiesにプロパティ設定を入れることができます別の方法としてhttp://mywiki.wooledge.org/BashFAQ/050

+0

何が何であってもスペースで分割される理由を詳しく説明できますか? – AlexBrand

+0

これは、単語分割がbashでどのように機能するかということです。私がbash faqへのリンクを追加した理由があります。いくつかのソリューションも用意されています。 –

関連する問題