Path 如何找到JavaEE项目的路径或在何处指定路径?

Path 如何找到JavaEE项目的路径或在何处指定路径?,path,jakarta-ee,Path,Jakarta Ee,我开发Java应用程序,我必须在我的应用程序的src文件夹中创建一些文件。但是我不知道在哪里或者如何指定路径。我希望我的应用程序是可移植的。它的意思就是说TestProject/src/。。。。而不是C:/bla/bla/TestProject/src/ 我们是在一些应用程序文件(比如web.inf、meta-inf)中指定这一点,还是仅仅是一些技巧 谢谢 如果它是web应用程序,您可以找到临时目录的位置,然后在那里创建文件。乙二醇 public void doGet(HttpServletRe

我开发Java应用程序,我必须在我的应用程序的src文件夹中创建一些文件。但是我不知道在哪里或者如何指定路径。我希望我的应用程序是可移植的。它的意思就是说TestProject/src/。。。。而不是C:/bla/bla/TestProject/src/

我们是在一些应用程序文件(比如web.inf、meta-inf)中指定这一点,还是仅仅是一些技巧


谢谢

如果它是web应用程序,您可以找到临时目录的位置,然后在那里创建文件。乙二醇

public void doGet(HttpServletRequest req, HttpServletResponse res)
   throws Exception {

   File f = (File)getServletContext().getAttribute("javax.servlet.context.tempdir");
   if (f != null) {
     // Do something with f
   } else {
     // We don't have a temporary directory. Fall back to a preconfigured directory 
     // from web.xml <init-param>
   }
}
public void doGet(HttpServletRequest-req,HttpServletResponse-res)
抛出异常{
文件f=(文件)getServletContext().getAttribute(“javax.servlet.context.tempdir”);
如果(f!=null){
//用f做点什么
}否则{
//我们没有临时目录。请返回到预配置的目录
//从web.xml
}
}

请参阅。

执行此操作的最佳方法是使用类加载器加载资源。既然您说过要将它放在src文件中,那么您只需要确保它被打包到您的jar中,或者如果您使用的是war,那么就将它放在WEB-INF/classes下。从那里,你可以直接使用。这样做的好处是,无论您的jar/war到达哪里,您都不必担心文件的位置,因为类加载器相对于归档文件的源进行读取。有关如何使用它或更多类路径加载技术的示例,您可以阅读以下内容。(第二页有您需要的示例)

如果我有JSF应用程序呢?我能从一个简单的类中得到真正的路径吗?好的,有可能获得faces上下文,比如:FacesContext.getCurrentInstance();但是关于真正的路径我不知道;ServletContext sc=(ServletContext)fc.getExternalContext().getContext();好的,它起作用了。但我还是有点困惑。实际上我是这样做的。在运行时,我生成类,编译它们,然后使用它们。您希望在哪里创建它们?在“src”文件夹中编译生成/类?在如何获得到它们的绝对路径之后?同样通过您的代码,我得到了C:\..\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\TestPorject\