又回来了,这次是一个 java 问题。有人告诉我如何让 Processbuilder 运行非本地脚本(调用将运行脚本的程序),但我一直在尝试运行 java 脚本并遇到了几个问题。首先,我应该使用 .class 还是 .jar?这两个都可以运行,但我不确定哪一个会更好。然后我该如何正确执行它们?我试过调用java(/usr/lib/jvm/java-6-openjdk/jre/bin/java),然后将文件路径提供给类文件,但这似乎不起作用。
有任何想法吗?
又回来了,这次是一个 java 问题。有人告诉我如何让 Processbuilder 运行非本地脚本(调用将运行脚本的程序),但我一直在尝试运行 java 脚本并遇到了几个问题。首先,我应该使用 .class 还是 .jar?这两个都可以运行,但我不确定哪一个会更好。然后我该如何正确执行它们?我试过调用java(/usr/lib/jvm/java-6-openjdk/jre/bin/java),然后将文件路径提供给类文件,但这似乎不起作用。
有任何想法吗?
我同意 sarnold 的 .jar 问题。在使用ProcessBuilder执行代码方面,你可以执行一个.jar文件,只要这个文件包含一个main()
方法,并且有Main-Class
manifest header,可以在创建.jar时生成。创建 .jar 后,您将使用如下命令运行 .jar:
java -jar jar_file_name_here.jar
如果你有多个主类并且你想运行一个特定的类,你可以使用这样的命令:
java -jar jar_name.jar com.main.class.package.path.here.SomeClassName
您是在尝试执行其他人的 .jar,还是您自己想要在脚本中执行?出于好奇,您为什么要使用脚本?
您需要 -jar 和具有命名主类的清单的 jar 的路径名,或 -cp 与标准布局中包含您的类的目录的路径名,或 -cp 与 jar 的路径名后跟带有 main 的类的名称。
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_pathN”是具有标准类层次结构的目录。