我使用 NetBeans 7.2.1 编写了一个 java Servlet web 应用程序。该程序有一些我附加到项目的 jar 文件库。该应用程序使用 NetBeans 和 Apache Tomcat 7.0.27 运行良好。
我的问题是我在项目中使用的一些 jar 文件库需要访问一些文件夹和文件。我将这些文件夹和文件放在与整个 NetBeans 项目相同的目录中。但我得到了这个异常(exception):
Exception: java.lang.RuntimeException: java.io.FileNotFoundException
所以我使用这些代码来找出我应该把它们放在哪里:
out.println("current directory: " + new File(".").getAbsolutePath());
out.println("current directory: " + System.getProperty("user.dir"));
out.println("current directory: " + getServletContext().getRealPath(("/")));
所以我想出了当前的工作目录是:
C:\Program Files\Apache Software Foundation\Apache Tomcat 7.0.27\bin
我的问题是如何为每个网络应用程序设置不同的目录地址?我有很多 Web 应用程序,其中一些使用相同的资源文件名。我不能将它们全部放在一个目录中。
请注意,我无权访问 jar 文件的源代码来更改 .我只需要一种方法来设置 jar 文件使用的绝对路径。
当我将WAR 文件放在unix 服务器上时,我遇到了同样的问题。提取的 WAR 文件位于服务器上的这个位置:
/data02/tools/Apache/Tomcat/apache-tomcat-6.0.37/webapps/BANNEROnline
但我认为我应该将资源文件夹和文件放在这个路径中(moosavi3 是我的用户名!):
/home/moosavi3
如何更改路径?
最佳答案
工作目录是启动 java.[exe,bin] 的目录。我假设 bin 目录是 tomcat 启动脚本所在的位置?如果 jars 都使用这个工作目录,我不相信有办法让不同的网络应用程序有不同的工作目录,它们都从同一个工作目录加载到同一个 jvm (java.exe) 上。
工作目录是启动二进制文件的目录,它不是您可以更改的任意值。
我怀疑这些 jar 文件应该作为独立的应用程序运行,并希望它们尝试访问的文件系统资源与它们位于同一位置。
任何文件系统资源都必须移动到您的 java.exe 的位置,以便您的 jars 可以产生正确的文件路径解析。
关于apache - 如何更改 jar 文件在 java Web 应用程序中使用的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19498277/