【问题标题】:Heroku run Jar from JavascriptHeroku 从 Javascript 运行 Jar
【发布时间】:2018-08-31 04:36:33
【问题描述】:

我正在尝试从 Javascript 文件执行 Jar 文件以获取控制台输出。我已经将这两个文件都推送到 Heroku,但是当我尝试在 js 文件中调用该函数时,我得到了这个错误:

/bin/sh: 1: java: not found exec error: Error: Command failed: java -jar -Xms1024m MongoConnector-all abaabaa

[31merror[39m: RangeError: 超出最大调用堆栈大小

这是我的代码:

const runCoreSearch = function(searchInputString) {
  const exec = require('child_process').exec;
  //child = exec('/usr/bin/java -jar ~/Applications/Mongo Connector-all.jar' + rakeInputString,
  const child = exec('java -jar -Xms1024m MongoConnector-all ' + searchInputString,
  function (error, stdout, stderr){
...

在他们的网站 (https://devcenter.heroku.com/articles/deploying-executable-jar-files) 上,它说使用命令“heroku deploy:”,但我不是要部署 Java 项目,只需从 node.js 项目执行 jar。有什么想法吗?

【问题讨论】:

    标签: javascript java heroku


    【解决方案1】:

    您需要将heroku/jvm buildpack 添加到您的应用并重新部署:

    $ heroku buildpacks:add heroku/jvm
    $ git commit -m "redeploy" --allow-empty
    $ git push heroku master
    

    这会将java 命令安装到您的测功机中。

    【讨论】:

      【解决方案2】:

      我做了codefinger的解决方案,但得到以下错误:

      Picked up JAVA_TOOL_OPTIONS -Xmx300m -Xss512k -Dfile.encoding=UTF-8 
      Error : A JNI error has occured, please check you installation and try again 
      Exception in thread "main" java.lang.UnsupportedClassVersionError: myClass has been compiled by a more recent version of the Java Runtime (class file version 54.0)...this java version only recognize version up to 52.0
      

      为了解决这个问题,

      • 在文件夹的根目录中创建一个名为 system.properties 的文件
      • 添加 java.runtime.version=XX,其中 XX 是您的 jdk/jre 的当前版本
      • 将代码推送到heroku

      文档:https://devcenter.heroku.com/articles/java-support#supported-java-versions

      【讨论】:

        猜你喜欢
        • 2013-08-27
        • 2015-09-12
        • 2018-09-18
        • 1970-01-01
        • 2017-11-08
        • 2017-11-06
        • 1970-01-01
        • 1970-01-01
        • 2011-06-04
        相关资源
        最近更新 更多