Java-获取服务器绝对路径

Java-获取服务器绝对路径,java,file,tomcat,glassfish,Java,File,Tomcat,Glassfish,如何获取我的机器中服务器位置的绝对路径 假设我使用的是glassfish服务器,那么我需要获得glassfish docroot位置的绝对路径,如下所示: C:\glassfish3\glassfish\domains\domain1\docroot 在运行时,我需要使用java io包在该位置创建文件,如: C:\glassfish3\glassfish\domains\domain1\docroot\myfile.txt 对于这一点,您不需要选择完整的路径,因为 当您创建文件时,默认情况

如何获取我的机器中服务器位置的绝对路径

假设我使用的是glassfish服务器,那么我需要获得glassfish docroot位置的绝对路径,如下所示:

C:\glassfish3\glassfish\domains\domain1\docroot
在运行时,我需要使用java io包在该位置创建文件,如:

C:\glassfish3\glassfish\domains\domain1\docroot\myfile.txt

对于这一点,您不需要选择完整的路径,因为

当您创建文件时,默认情况下,它将在服务器的
根目录下创建

这里是
C:\glassfish3\glassfish\


希望这能对您有所帮助。

我也遇到了类似的问题,最终使用了

path = getClass().getProtectionDomain().getCodeSource().getLocation()
因为我需要静态函数的路径。这将指向WEB-INF/classes目录的位置。有了它,您可以指向类似于
path.subString(0,path.indexOf(“WEB-INF”))
的内容


我遇到的一个问题是:从Eclipse运行测试时,它将我指向项目的“build”目录。

这是一个非常糟糕的主意。如果您在WAR或EAR文件中运行,docroot将不在可写文件系统上。假设是这样的话,以后可能会导致头痛


使用不同的方法(如servlet初始化参数)来指定可写文件系统位置。

如果使用GlassFish启动GlassFish,即使用
asadmin start domain | start instance
,则我们提供以下铁的保证:

JVM的当前工作目录绝对肯定是域或服务器的配置目录。在默认情况下,这将是:

c:/glassfish3/glassfish/domains/domain1/config
如果要将某些内容写入(默认)docroot,可以执行以下操作:

File f = new File("../docroot/yourfile");

即使您直接使用java启动服务器(例如,
java-jar glassfish.jar
),另一个保证在任何情况下都能正常工作的选项是使用System属性的值,如下所示:

File f = new File(System.getProperty("com.sun.aas.instanceRoot") + "/docroot/yourfile");

我不知道这是否是最好的方法,但它对我很有效:)

您可以尝试以下操作:

System.getProperty("catalina.base");
通过在调试模式下观察以下变量,可以找到其他属性

Properties properties = System.getProperties();

查看类似于
getRealPath(path)
&
getContextPath()
.request.getRealPath(“”)或request.getServletContext()的方法。getRealPath(“”)为我提供了C:\Users\Administrator\Documents\NetBeansProjects\ServletExamples\build\web@user966709获得该路径可能是因为您已从NetBeans配置了热部署。。但是如果你真的创建一个.war文件并部署它,你可能会得到docroot的路径。目前我使用硬编码路径C:\glassfish3\glassfish\domains\domain1\docroot在该位置写入文件,但需要动态获取,因为若其他人将使用该应用程序,那个么可能是他的glass fish服务器存在于d:\directory中,在这种情况下,他需要手动更改路径;这将在C:\glassfish3\glassfish\domains\domain1\docroot\myfile.txt创建文件,即使是C:\或d:\中的glassfish也不重要。这将获取启动应用程序服务器的位置的路径,通常是startup.sh/startup.bat所在的位置。此脚本可能不一定在服务器文件夹中。特定于特定的web服务器,但正如我所看到的,提问者使用glassfish。所以这对他/她是有用的。我试着这么做,但遗憾的是,我没有找到任何绝对路径来显示我的服务器的根。你知道怎么确定吗?(我使用了第二个代码,并通过日志记录打印出来)。
Properties properties = System.getProperties();