获取tomcat';使用java的安装目录

获取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

我想使用java在我的计算机中获取tomcat的安装目录。我尝试使用:

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 %>).