到目前为止,我已经很擅长在 Eclipse 中运行 Java 代码了。但对于我的下一个项目,我需要尽可能地循环程序。我认为,最好的方法是使用循环批处理文件,但我不知道如何编写它。
所以有这个 example.jar 文件,其中包含几个不同的类,我无法以任何方式更改它们。我唯一能做的就是通过 cfm 控制台命令更改 Manifest。
在 Eclipse 中,我可以将 main 设置为 exampleMain.class 并将参数设置为 -t X SomeActuallyIrrelevantName package.className package.className2,其中 X 是一个数字。我实际上不知道 -t 是做什么的。
每当我尝试通过命令行(java -jar example.jar)调用example.jar时,它都会说无法加载或找到主类。我尝试更改 list 中的主类(从 exampleMain 到 exampleMain.class 到 example.exampleMain 和 example.exampleMain.class),但似乎没有帮助。
最佳答案
这是通过(Windows)批处理文件执行此操作的一种方法,给定您希望从单个 jar 运行的已知类列表,没有依赖项...
@echo off
:: You'll need to edit this list with your ACTUAL fully qualified class names
:: from example.jar, or whatever your jar is called.
set classesToRun=package1.Class1;package2.Class2;package3.example.game.Class3
for %%c in (%classesToRun%) do (
java -cp example.jar %%c
)
set classesToRun=
@echo on
如您所见,您不必在 jar 文件中指定主类属性。仅当有一个主类入口点时才如此。即使您确实定义了一个,也不必调用它。如果你想调用默认的主类,那么你可以使用 -jar
参数,但无论如何您不必。
如果您有任何依赖项,则必须将它们添加到上面的 example.jar 行之后,并以 ;
分隔。即
java -cp example.jar;dependency1.jar;dependency2.jar %%c
在您的具体示例中,听起来您正在调用游戏框架 jar,并将您自己的类作为参数传递给它。我不知道你的游戏框架中期望的格式,但它可能是这样的(你可以告诉我正确的格式,我会相应地修改答案)...
java -cp GameFramework.jar;YourClasses.jar game.framework.MainClass path.to.YourClass1 path.to.YourClass2
您需要更新上述内容以匹配您的游戏框架 jar 和主类,并将您自己的类替换为该主类的参数。我目前假设游戏框架目前将您的类作为单独的参数,但您可以建议我或对其进行调整以适应您的游戏框架的实际参数格式。
关于java - 如何使用批处理文件无限循环需要参数的 jar 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37171628/