到目前为止,我在Eclipse中运行Java代码非常好。但对于我的下一个项目,我需要尽可能多地循环程序。我认为,最好的方法是循环批处理文件,我不知道如何编写它。
所以有这个 example.jar 文件,包含几个不同的类,我无法以任何方式改变它们。我唯一能做的就是通过cfm console命令更改Manifest。
在eclipse中,我可以将main设置为 exampleMain.class ,并将参数设置为 -t X SomeActuallyIrrelevantName package.className package.className2 ,其中X为数字。我实际上不知道 -t 做了什么。
每当我尝试通过命令行( java -jar example.jar )调用 example.jar 时,它说主要类不能被装载或找到。我尝试更改清单中的主类(从 exampleMain 到 exampleMain.class 到 example.exampleMain 和 example.exampleMain.class ),但它似乎没有帮助。
答案 0 :(得分:0)
这是通过(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文件中指定main-class属性。只有在有一个主要的入口点时才会这样。即使你确定了一个,你也不必打电话。如果您想调用默认主类,那么您可以使用-jar
参数,但无论如何不必。
如果您有任何依赖关系,那么您必须在上面的example.jar行之后添加它们,由;
分隔,即
java -cp example.jar;dependency1.jar;dependency2.jar %%c
在您的SPECIFIC示例中,听起来您正在调用游戏框架jar将您自己的类作为参数传递给它。我不知道你的游戏框架中预期的格式,但它可能是这样的(你可以告诉我正确的格式,我会相应地修改答案)......
java -cp GameFramework.jar;YourClasses.jar game.framework.MainClass path.to.YourClass1 path.to.YourClass2
您需要更新以上内容以匹配您的游戏框架jar和主类,并将您自己的类替换为该主类的参数。我目前正在假设游戏框架目前将你的类作为单独的参数,但你可以建议我或根据游戏框架的实际参数格式进行调整。