Java 从servlet中获取Web应用程序类路径

Java 从servlet中获取Web应用程序类路径,java,servlets,classpath,Java,Servlets,Classpath,这样做的原因是,我希望使用与servlet相同的类路径来使用Runtime.exec()。 我要运行的类位于WEB-INF/classes/my/package/中 因此,我想构建一个cmdarray作为字符串[]{“java”,“-cp”,my_servlet_classpatch,“my.package.myclass”} 我就是找不到一种方法来获取我正在运行的servlet类路径 注意:这必须在Tomcat或Jetty(或任何像样的servlet容器)中工作。是否getServletCon

这样做的原因是,我希望使用与servlet相同的类路径来使用Runtime.exec()。 我要运行的类位于WEB-INF/classes/my/package/中

因此,我想构建一个cmdarray作为字符串[]{“java”,“-cp”,my_servlet_classpatch,“my.package.myclass”} 我就是找不到一种方法来获取我正在运行的servlet类路径


注意:这必须在Tomcat或Jetty(或任何像样的servlet容器)中工作。

是否
getServletContext()。getRealPath(…)
就是您要找的

例如,如果webapp在Linux上,并且ImageMagick工具可用(不,我不想使用Java ImageMagick包装器),那么我需要进行一些图像处理。我的webapp有一个“图像”存储库,我的所有图像都存在其中。我可以通过发出以下命令获得实际部署的目录:

getServletContext().getRealPath( "images" )
其中:

/home/tomcat/apache-tomcat-6.0.26/webapps/mywebapp/download

注意,在您的情况下,我不确定您是否需要:您真的想使用Runtime.exec生成一个新的Java进程吗

getServletContext().getRealPath(…)会是您要找的吗

例如,如果webapp在Linux上,并且ImageMagick工具可用(不,我不想使用Java ImageMagick包装器),那么我需要进行一些图像处理。我的webapp有一个“图像”存储库,我的所有图像都存在其中。我可以通过发出以下命令获得实际部署的目录:

getServletContext().getRealPath( "images" )
其中:

/home/tomcat/apache-tomcat-6.0.26/webapps/mywebapp/download

注意,在您的情况下,我不确定您是否需要:您真的想使用Runtime.exec生成一个新的Java进程吗

您可以直接从servlet调用“my.package.myclass”吗?它必须在一个单独的进程中运行吗?@Brad,请看我下面关于为什么我要运行一个单独进程的评论。你能直接从servlet调用“my.package.myclass”吗?它必须在一个单独的进程中运行吗?@Brad,请看下面我对为什么我要运行一个单独进程的评论。是的,这就是我想要的!我想要产生一个新进程的原因相当具体:这个新进程本身就是一个“远程进程服务器”。它将允许我启动新进程,而不会遇到fork()资源分配问题和oom错误,特别是在内存过度分配为false的Linux上。请参阅以获得更好的解释。因此,我的“远程服务器”将有一个较小的最大堆空间,而分叉它并不意味着像我的主servlet那样分配大量资源。是的,这就是我所寻找的!我想要产生一个新进程的原因相当具体:这个新进程本身就是一个“远程进程服务器”。它将允许我启动新进程,而不会遇到fork()资源分配问题和oom错误,特别是在内存过度分配为false的Linux上。请参阅以获得更好的解释。因此,我的“远程服务器”将有一个较小的最大堆空间,而分叉它并不意味着像我的主servlet那样分配大量资源。