Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Processbuilder在linux中打开java脚本_Java_Jar_Processbuilder - Fatal编程技术网

Processbuilder在linux中打开java脚本

Processbuilder在linux中打开java脚本,java,jar,processbuilder,Java,Jar,Processbuilder,再来一遍,这次是一个java问题。我被告知如何让Processbuilder运行非本机脚本(调用将运行脚本的程序),但我一直在尝试运行java脚本,遇到了一些问题。首先,我应该使用.class还是.jar?这两个都可以运行,但我不确定哪一个运行得更好。那么我如何正确地执行它们呢?我尝试调用java(/usr/lib/jvm/java-6-openjdk/jre/bin/java),然后给出类文件的文件路径,但这似乎不起作用 有什么想法吗?关于.jar问题,我同意萨诺尔德的看法。就使用Proces

再来一遍,这次是一个java问题。我被告知如何让Processbuilder运行非本机脚本(调用将运行脚本的程序),但我一直在尝试运行java脚本,遇到了一些问题。首先,我应该使用.class还是.jar?这两个都可以运行,但我不确定哪一个运行得更好。那么我如何正确地执行它们呢?我尝试调用java(/usr/lib/jvm/java-6-openjdk/jre/bin/java),然后给出类文件的文件路径,但这似乎不起作用


有什么想法吗?

关于.jar问题,我同意萨诺尔德的看法。就使用ProcessBuilder执行代码而言,您可以执行.jar文件,只要该文件包含
main()
方法,并且具有
main类
清单头,可以在创建.jar时生成。一旦创建了.jar,就可以使用如下命令来运行.jar:

java-jar-jar\u文件\u名称\u此处.jar

如果您有多个主类,并且希望运行一个特定的主类,则可以使用如下命令:

java-jar\u name.jar com.main.class.package.path.here.SomeClassName


您是在尝试执行其他人的.jar,还是只想在脚本中执行自己的?出于好奇,为什么要使用脚本?

您需要-jar和jar的路径名,jar有一个清单可以命名您的主类,或者-cp有一个目录的路径名,该目录在标准布局中包含您的类,或者-cp有一个jar的路径名,后跟一个主类的名称

java -jar I_AM_A_JAR_WITH_A_MANIFEST.jar

java -cp I_AM_JAR_1.jar:I_AM_JAR2.jar... this.is.my.FooClass

java -cp dir_path1:dir_path2:dir_path3 this.is.my.FooClass

其中“dir\u pathN”是一个具有标准类层次结构的dir。

我很久以前的记忆是,
.jar
是两个或更多类的首选格式。几乎每个有用的程序都会这样做,所以请使用
.jar
。即使你还没有两个类,你也很有可能:)所以你最好不要因为如何启动你的程序而打扰你的用户。我实际上正在做一个科学项目,我正在利用一个主java程序运行一组来自其他语言的脚本,也就是processbuilder。顺便说一下,java脚本只有一个类。此外,processbuilder需要一个程序,然后是脚本。为了保持一致性,我希望能够在所有脚本上调用processbuilder。遗憾的是,这意味着我不能在调用程序时使用标志。您也可以始终使用系统脚本语言来运行进程。如果您的应用程序是在Linux上运行的,那么您总是可以编写一个批处理脚本来执行相同的操作,如果您认为合适,您可以重新路由程序的输出。我知道你可以在Java中做同样的事情,如果你用脚本的方式来做,看起来可能会更简单…哈哈,是的,那可能会更容易。不幸的是,由于这是一个学校项目,我不得不使用Java作为主程序。在创建.jar时,我将如何生成main_类?好吧,整个main类/清单信息真的帮助了我,谢谢!