apache - 如何更改 jar 文件在 java Web 应用程序中使用的路径

标签 apache unix tomcat netbeans path

我使用 NetBeans 7.2.1 编写了一个 java Servlet web 应用程序。该程序有一些我附加到项目的 jar 文件库。该应用程序使用 NetBeansApache 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/

相关文章:

linux - 远程访问 virtualenv

apache - 无法在未找到 CentOS 私钥上启动 Apache

tomcat - HAProxy - URL 重定向和重写

tomcat8.sh vs catalina.sh vs startup.sh

java - Tomcat - 我可以强制非 https 吗?

regex - 如何编写表达式以获取表达式后的所有内容,然后在 htaccess 中重写

php - 调试 Drupal 的白屏死机?

timer - UNIX 编程。 struct timeval 如何打印它(C 编程)

linux - 无法获取 rsync 排除选项以排除目录

unix - 将 gradle 脚本的控制台输出记录到文件中