【问题标题】:Jar file outside tomcat Webapp not executingTomcat Webapp外部的Jar文件未执行
【发布时间】:2014-01-22 10:58:43
【问题描述】:

我已经在 Tomcat 7 上部署了我的 Rest API。

部署在以下路径:

/var/lib/tomcat7/webapps/myproject

我有一个 Jar 文件保存在这个位置:

/home/user/executor/datacollector.jar

从我的应用程序运行此 jar 时遇到问题。使用此代码调用时它没有运行。

我的运行代码是:

ProcessBuilder pb = new ProcessBuilder("java", "-jar", "/home/user/executor/datacollector.jar");


Process p = pb.start();
ResultStream resultStream = new ResultStream(p.getInputStream());
Thread thread = new Thread(resultStream , "resultStream");
thread.start();


public class ResultStream implements Runnable {

private static Logger logger = Logger.getLogger("ResultStream");

private BufferedReader reader;

public ResultStream(InputStream is) {
    this.reader = new BufferedReader(new InputStreamReader(is));
}

public void run() {
    try {
        String line = reader.readLine();

        logger.info("line - "+line);

        while (line != null) {
           logger.info(line);
            line = reader.readLine();
        }
        reader.close();
    } catch (IOException e) {
        logger.error("IOException in executing jar",e);
       // e.printStackTrace();
    }
    catch (Exception e) {
        logger.error("Error in executing jar",e);
       // e.printStackTrace();
    }
}

}

路径有什么问题吗,因为它在Tomcat的webapps文件夹之外。

请指出我的错误。

【问题讨论】:

  • 在调用 RESTFul 服务时是否出现异常?有什么理由不在类路径中添加 jar?
  • 没有..没有得到任何异常。并且 Jar 可以从其他 2 个应用程序访问。所以放在外面。

标签: java linux file


【解决方案1】:

如果您的 tomcat 实例正在由另一个用户运行,例如单独的“tomcat”用户,那么它可能无权访问您的 [用户] 主目录中的文件。

尝试将 jar(以及您的 java 代码中的引用路径)移动到您的 tomcat 目录中的“lib”文件夹中。

【讨论】:

  • 感谢它在将它移动到 tomcat 后工作。但我仍然想将我的 jar 文件保留在 tomcat 之外。即使在为 tomcat 和主目录分配相同的用户之后,我也会遇到同样的错误。
  • 您可能需要更改 jar 文件夹/文件的权限。您可能希望将其更改为 755,以便您可以读取/写入/执行它,并且所有其他用户都可以读取/执行它。查看stackoverflow.com/questions/16756995/…的置顶答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-06
  • 2012-04-25
  • 1970-01-01
  • 2020-12-25
  • 2017-01-04
  • 2012-01-25
  • 2011-08-18
相关资源
最近更新 更多