获取tomcat';使用java的安装目录
我想使用java在我的计算机中获取tomcat的安装目录。我尝试使用:获取tomcat';使用java的安装目录,java,tomcat,catalina,Java,Tomcat,Catalina,我想使用java在我的计算机中获取tomcat的安装目录。我尝试使用: System.getProperty("catalina.base"); 及 但这两种方法都返回null作为答案。我用System.getProperty(“java.home”)并正确返回java路径。 你知道问题出在哪里吗?谢谢尝试安装此JSP并为“property”参数传递各种值: <% String propertyName = request.getParameter("property"); Ob
System.getProperty("catalina.base");
及
但这两种方法都返回null
作为答案。我用System.getProperty(“java.home”)代码>并正确返回java路径。
你知道问题出在哪里吗?谢谢尝试安装此JSP并为“property”参数传递各种值:
<%
String propertyName = request.getParameter("property");
Object propertyValue;
String typeString;
if(null == propertyName)
propertyValue = null;
else
propertyValue = System.getProperty(propertyName);
if(null == propertyValue)
typeString = "null";
else
typeString = propertyValue.getClass().getName();
%>
The system property <code><%= propertyName %></code> has the value:
<code><%= propertyValue %></code> (<%= typeString %>).
系统属性
的值为:
()。
也许您可以找到属性值返回null的模式。我也遇到了与您相同的错误。但后来我意识到tomcat服务器没有运行。启动服务器后,我仍然无法获取tomcat路径。
然后我意识到我在一个JSF项目中试图从main方法获取路径,而tomcat仍然在运行。
因此,我最终使用:System.out.println(System.getProperty(“catalina.base”))获得了tomcat路径在@PostConstruct
方法中,我的@ViewScoped
bean之一位于JSF
项目中。并成功显示C:\Documents And Settings\S!借给W@RRIOR\应用程序数据\NetBeans\7.2.1\apache-tomcat-7.0.27.0_base
位于控制台中的NetBeans
因此,为了获得Tomcat的安装目录,应该记住以下几点:
- Tomcat服务器正在运行
- 您没有试图从
main
方法获取路径
希望这有帮助我们正在使用cucumber进行测试,在cucumber案例中,我们正在访问项目的单独方法。在这个项目中,我们正在读取xml的配置,位置在ApacheTomcat的config文件夹中。现在,当我运行project时,System.out.println(System.getProperty(“catalina.base”));它提供了正确的路径,但是当我从cucumber调用project的方法时,返回null您是否在SecurityManager下运行?@ChristopherSchultz:啊,是的。我配置了conf/tomcat-users.xml。这就是问题所在吗?是因为它不允许对系统调用吗?catalina.base
和catalina.home
必须设置为环境变量才能访问它们。@twall:所以如果没有设置它们,就无法获取tomcat的安装目录吗?@mkab如果您在SecurityManager下(不仅仅是使用tomcat-users.xml,这只是用户身份验证)然后JVM禁止访问某些东西。IIRC,如果不允许访问系统属性,则在尝试访问系统属性时会出现SecurityException,而不是NULL。感谢您提供的代码。虽然我对jsp了解不多,但我从未使用过它。尽管如此,我尝试测试了代码,它始终为所有系统属性提供了be NULL值我试过了。所以我对代码做了一点修改。我删除了request.getParameter和所有与之相关的东西,并直接使用System.getProperty。它给我发送了catalina.home
和catalina.base
的正确值。奇怪的是,它为什么在java中返回空值。顺便说一句,我正在使用eclipse。可能是原因。噢!如果您使用的是Eclipse,那么这可能就是问题所在:Eclipse启动Tomcat的方式与Tomcat与其发行版捆绑的标准脚本不同。这些环境变量可能根本不是从Eclipse设置的。如果您从(提供的)启动Tomcat脚本,你得到你期望的值了吗?不,这不是我的意思。我不是用Eclipse来启动Tomcat。我只是用Eclipse来用java编程。我读到Eclipse自带内置jdk,不使用系统的jdk…所以我想这可能是问题所在。总之,我正常启动Tomcat(bin文件夹中的startup.sh)。我尝试使用终端javac
编译java文件,然后java
但仍然得到空值。我唯一能想到的是您的“java”尽管您认为Tomcat中没有运行代码。我不知道您的设置是什么,但很容易与所有移动部件混淆。也许您可以发布您的servlet代码,我可以看一看。我的servlet代码是什么意思?实际上,我正在为我的学校项目编写一个java GUI,它将更改$CATALINA_HOME/webapps/mondrian/WEB-INF
。到目前为止,用户只需在JTextField中输入他/她的Tomcat安装目录,我就从那里继续。现在我要做的是让它直接检测到这个$CATALINA_HOME。
<%
String propertyName = request.getParameter("property");
Object propertyValue;
String typeString;
if(null == propertyName)
propertyValue = null;
else
propertyValue = System.getProperty(propertyName);
if(null == propertyValue)
typeString = "null";
else
typeString = propertyValue.getClass().getName();
%>
The system property <code><%= propertyName %></code> has the value:
<code><%= propertyValue %></code> (<%= typeString %>).