当前位置: 首页 > 知识库问答 >
问题:

如何从命令行调用嵌入式jre以运行java应用程序

季骏祥
2023-03-14

是否可以在导出的独立Java应用程序中捆绑JRE?我们有一个非常具体的要求,即在没有安装最新Java版本的机器上运行独立的AnyLogicJava应用程序,并且由于公司的IT政策,我们将无法这样做

通过一些研究,我发现一些网站声称他们已经在Windows和Mac上这样做了。

在OSX上使用捆绑的JREhttps://wiki.openjdk.java.net/display/MacOSXPort/How在Mac应用程序中嵌入. jre捆绑包http://www.intransitione.com/blog/take-java-to-app-store/

我的问题是,这些帖子中的大多数都提到为Mac OS x捆绑应用程序,并要求在Eclipse之类的IDE中创建jar文件。但由于我使用AnyLogic,jar文件在我自己无法干预的情况下被导出。我需要的是更改运行jar文件的命令行代码,目前看起来是这样的:

java -Xdock:name="AnyLogic Model" -Dnativewindow.awt.nohidpi=true -cp com.anylogic.engine.jar:com.anylogic.engine.nl.jar:lib/database/querydsl/querydsl-sql-codegen-3.6.3.jar -Xmx256m model6.Simulation $*

(注意:为了可读性,代码减少了)

我假设会传递jre或JVM作为java调用的参数。或者可能设置用于java或其他东西的目录......因为在没有安装java的机器上调用java命令不会呈现任何内容。

我有一个非常简单的应用程序,还有一个从moneydance应用程序中获得的jdk插件,这是一个在OSx上运行的java应用程序,有自己的嵌入式jre,可以在这里找到

https://www.dropbox.com/sh/1bedimsb0lj403t/AADYR7iFoBD4YiqS_RGZ2xAVa?dl=0

谢啦

共有2个答案

宗增
2023-03-14

另一种选择是使用Exe4J将编译后的应用程序编译成可执行文件。它不是免费的,但另一个优点是您只向客户端发送一个exe文件,而不是一堆文件。(免责声明:尚未尝试使用内部AL7-dbase,但它在访问外部数据时工作正常)。

司马高昂
2023-03-14

我的一位不在Stack Exchange上的同事给了我答案,所以就这样,实际上很简单:

为了满足我的特定情况,只需要在提供给客户机的文件夹根目录中包含一个jre,然后在执行文件中引用java可执行文件。Windows和Mac的解决方案略有不同,因此:

在Mac上

您可以在以下文件夹中找到jre。它是一个隐藏文件夹,因此如果您的Mac电脑未设置为显示隐藏文件夹,请转到finder使用command-shift-g并转到

/Library/Java/JavaVirtualMachines/

应该有一个jdk文件夹,然后导航到

jdk1.8.0_45.jdk/Contents/Home/jre 

在Windows上

jre的位置在

c:\Program Files\Java\

您可以在中看到位置。AnyLogic在代码行中自动创建的bat文件,如下所示:

@SET PATH_XJAL="%DISK_XJAL%\Program Files\Java\jre6\bin\java.exe"

一旦有了jre,请将此文件夹复制到与独立java应用程序相同的位置。然后剩下的唯一一件事就是更改mac命令行可执行文件和windows中的引用位置。bat文件

在Mac上

更改自

java -Xdock:name="AnyLogic Model"

./jre/bin/java -Xdock:name="AnyLogic Model"

在Windows上

更改自

    @SET PATH_XJAL="%DISK_XJAL%\Program Files\Java\jre6\bin\java.exe"

   @SET PATH_XJAL= \jre6\bin\java.exe"

在Mac和Windows上运行java应用程序现在将独立于计算机上的java版本,无论是否安装

 类似资料:
  • 问题内容: 我通常使用java.lang.ProcessBuilder和java.lang.Process来运行外部命令行程序,并且对运行和完成命令运行良好。例如,这将在工作目录中运行带有参数“ myArg”的“ myProgram”: 但是,假设我想运行脚本或程序或具有交互式输入的内容(启动后提示我提供更多输入)。我可以使用与上面类似的代码在Java中执行此操作,还是需要其他方法?还是有一些图书

  • 问题内容: 所以我在这里有一个菜鸟般的时刻,我以前从未使用过命令行来运行Java程序,但现在我需要。我遇到的问题是,当我尝试运行程序时,出现ClassNotFoundException。我的课叫做OmadUpdate。我已经使用javac命令将OmadUpdate.java文件编译为OmadUpdate.class。我已经检查了目录,并且它们都绝对存在,但是当我运行java OmadUpdate命

  • 我下载了一个java程序,它由两个文件夹src和classes组成,分别包含源文件和类文件。现在,src和classes文件夹包含几个嵌套的子文件夹,其中最后一个子文件夹分别包含源文件和类文件。更准确地说,源文件和类文件的路径是src/edu/univ/。java和classes/edu/univ/。班假设包含main函数的文件是main。java,如何从命令行运行此程序。 我尝试过: 我也尝试过

  • 我用JDK 13制作了一个java应用程序。我用launch4j创建了一个exe文件。但是没有人可以运行它,因为每个人都有jre 1.8版本,而且它不会启动。。。我必须在安装中包含java jdk 13,并用它设置java_home?

  • 问题内容: 我正在构建一个Java程序来自动化服务器端的过程。通常,我cd到Desktop / GIT /并使用此maven命令“ mvn integration- test -DskipTests -P Interactive -e”。 我正在构建一个Java程序,并且试图运行该命令行,但到目前为止我没有成功。 到目前为止,这是代码: 问题答案: 我设法使用以下代码运行mvn :(我使用此命令:

  • 问题内容: 我必须将一些常规代码发送给仅安装了Java的某些用户(没有常规,没有$ groovy_home等)。我正在尝试从命令行调用Groovy,但是我没有运气。这是我的蝙蝠文件: 这是我的例外: 有人有线索吗?我在\ lib目录中有’groovy-all-1.6-beta-1.jar’。 问题答案: 我认为您需要在类路径中明确列出groovy jar