【发布时间】:2013-08-23 21:32:54
【问题描述】:
我需要通过 JAVA_OPTS 环境变量将多个系统属性传递给 Tomcat 6。我似乎无法传递包含空格的系统属性:
JRE_HOME=/root/jre1.6.0_34/ JAVA_OPTS="-DsysProp1=foo -DsysProp2=bar with spaces" ./catalina.sh run
失败:
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
【问题讨论】:
-
你能显示 cataline.sh 脚本吗?也许问题出在那个脚本里面
-
catalina.sh 是 Tomcat 的启动脚本,所以我不想修改它。你可以在这里看看:svn.apache.org/repos/asf/tomcat/tc6.0.x/tags/TOMCAT_6_0_34/bin/…
-
我担心你的所有路径都在
/root下 - 我希望你没有以 root 用户身份运行 Tomcat... -
这是一个我仅用于测试目的的虚拟机 :)
-
我仍然建议以非特权用户身份运行您的测试,否则您不会真正测试与在生产环境中运行相同的设置。
标签: java bash shell tomcat tomcat6