Java命令行启动器

时间:2008-12-22 20:56:22

标签: java command-line-interface

我正在开发.jar文件库,以实现一堆辅助类,将PC连接到一块外部硬件。我还将添加一些简单的应用程序,无论是命令行还是GUI,都可以使用库来处理常见任务。

我的问题是,是否有推荐的方法以某种特定的方式简化JVM的命令行实例化?

e.g。而不是要求用户输入隐藏的容易出错的命令,如:

java -cp TurboBlenderLib.jar -jar TurboBlenderApp.jar -DFoo=Bar arg1 arg2

而不是

TurboBlenderApp arg1 arg2

我想我可以使用shell脚本(包括win32批处理文件... gacckkk),这只是我不擅长那些+我想知道是否有更简单的平台无关运行Java的方式来自命令行的app。

8 个答案:

答案 0 :(得分:5)

  1. 当您使用-jar时,-cp(以及CLASSPATH变量)将被忽略
  2. 只提供一个可执行的jar。 “java -jar TheApp <whateverargumentsyouwant>”不应该太难(不过,您的jar文件清单中可以有Class-Path attribute
  3. 如果写得太难了
  4. 或提供那些shell脚本/批处理文件。写这些也不是太难。

答案 1 :(得分:2)

如果您只想简化本地执行,请使用批处理文件,甚至只需创建自定义快捷方式。如果要创建启动程序并打包可执行jar和必需的lib进行部署,请使用Launch4j之类的内容。

答案 2 :(得分:1)

Shell脚本和批处理文件是完成所需内容的标准方法。 (查看任何主要的Java产品。)

这当然是绝对可怜和荒谬的。去Java。

您的另一种选择是编写一个C语言程序,它可以满足您的需要(创建Java进程)并为您支持的每个平台编译。 (C是真正独立于平台的语言)。

无论哪种方式,您都需要采取与平台相关的步骤,让您的应用程序在操作系统中真正感受到家的感觉。在OS X上,您需要创建.app软件包,在Windows上,您需要将图标和版本信息打包到EXE中。对于Linux,shell脚本就足够了。 : - )

答案 3 :(得分:1)

出于某种原因,这个伎俩并没有解决。您需要做的是为您的jar文件创建定义Main-class:属性的自定义清单,并在jar文件中包含您正在使用的所有类文件。然后你需要的就是运行

$ java -jar myapp.jar

在实际操作系统上,您甚至可以只运行jar文件,因为它们将使用幻数启动它。但是如果必须的话,只需要包含该行的单行批处理或shell脚本。

Java Tutorials之一中描述了这一点。

答案 4 :(得分:1)

如果使用java -jar启动应用程序,则可以通过向主jar清单添加Class-Path条目,将其他jar添加到类路径中。有关详细信息,请参阅jar file spec

答案 5 :(得分:1)

另一种解决方案是雅加达下议院,一如既往:commons-launcher

答案 6 :(得分:0)

批处理文件可以完成这项工作。将要执行的确切命令放入文件myProg.bat并运行它。

答案 7 :(得分:0)

这很简单:

将此内容写入TurboBlenderApp.cmd:

java -cp TurboBlenderLib.jar -jar TurboBlenderApp.jar -DFoo=Bar %1 %2

//请记住saua回答关于-cp和-jar

的问题

然后从命令行中编写:

TurboBlenderApp arg1 arg2

就像你想要的那样。

如果在Unix / Linux中用$ 1 $ 2替换th4e%1%2,并确保你的应用具有执行权限(如果你不知道如何做到这一点,我想你也不需要它)