Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.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
Java 如何使用批处理文件无休止地循环需要参数的jar文件?_Java_Eclipse_Batch File_Jar - Fatal编程技术网

Java 如何使用批处理文件无休止地循环需要参数的jar文件?

Java 如何使用批处理文件无休止地循环需要参数的jar文件?,java,eclipse,batch-file,jar,Java,Eclipse,Batch File,Jar,到目前为止,我已经非常擅长在Eclipse中运行Java代码。但是对于我的下一个项目,我需要尽可能多地循环程序。我认为,最好的方法是循环批处理文件,我不知道如何编写它 所以这里有一个example.jar文件,它包含几个不同的类,我不能以任何方式修改它们。我唯一能做的就是通过cfmconsole命令更改清单 在eclipse中,我可以将main设置为exampleMain.class,并将参数设置为-t X someactuallyrelevantname package.className p

到目前为止,我已经非常擅长在Eclipse中运行Java代码。但是对于我的下一个项目,我需要尽可能多地循环程序。我认为,最好的方法是循环批处理文件,我不知道如何编写它

所以这里有一个example.jar文件,它包含几个不同的类,我不能以任何方式修改它们。我唯一能做的就是通过cfmconsole命令更改清单

在eclipse中,我可以将main设置为exampleMain.class,并将参数设置为-t X someactuallyrelevantname package.className package.className2,其中X是一个数字。我真的不知道-t是做什么的


每当我试图通过命令行(java-jarexample.jar)调用example.jar时,它都会说无法加载或找到主类。我试图改变清单中的主类(从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,并将自己的类作为参数传递给它。我不知道你的游戏框架中所期望的格式,但可能是这样的(你可以告诉我正确的格式,我会相应地修改答案)


您需要更新上述内容,以匹配游戏框架jar和主类,并将您自己的类替换为该主类的参数。我现在假设游戏框架目前将您的类作为单独的参数,但您可以建议我或调整它以适合游戏框架的实际参数格式。

这是通过(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,并将自己的类作为参数传递给它。我不知道你的游戏框架中所期望的格式,但可能是这样的(你可以告诉我正确的格式,我会相应地修改答案)


您需要更新上述内容,以匹配游戏框架jar和主类,并将您自己的类替换为该主类的参数。我目前假设游戏框架目前将您的类作为单独的参数,但您可以建议我或调整此设置以适合游戏框架的实际参数格式。

您需要发布您迄今为止尝试过的脚本。您还应该发布jar文件的内部结构。您的example.jar是否依赖于任何其他jar?我假设您希望通过批处理文件从这个jar顺序调用几个类?一旦我了解了以上所有内容,我就可以为您提供一个解决方案。java-cp example.jar包。NameOfClassThatYouWantToRun@ManoDestra:example.jar包含一个棋盘游戏的框架,其中package.className和package.className2是我自己编程的玩家,X是每个回合的时间限制。我希望通过exampleMain.class的初始化来更改每个播放器的值,但由于我无法将exampleMain.class更改为无限次运行(或者说仅数千次),因此我希望在批处理文件中循环它。除example.jar外,没有其他jar文件,它只包含游戏的可视化和两名玩家的交替调用。@Borut Hadžialić这只会导致相同的结果:找不到或加载main类。@ManoDestra,因为我不知道如何编写.bat文件,我尝试通过控制台使用以下命令启动它:
jar cfm example.jar newManifest.txt
来更改jar中的清单,指向exampleMain.class(这很有效,我可以在eclipse中看到更改)然后我尝试用
java-jar example.jar
运行I,它返回了错误消息以及
java-jar example.jar“-t”“X”“rrelevantName”“package.className”“package.className2”
,同样没有“-结果相同。您需要发布迄今为止尝试过的脚本。您还应该发布jar文件的内部结构。您的example.jar是否依赖于任何其他jar?我假设您希望通过批处理文件从这个jar顺序调用几个类?一旦我了解了以上所有内容,我就可以为您提供一个解决方案。java-cp example.jar包。NameOfClassThatYouWantToRun@ManoDestra:example.jar包含一个棋盘游戏的框架,其中package.className和package.className2是我自己编程的玩家,X是每个回合的时间限制。我想通过初始化来更改每个玩家的值