gpt4 book ai didi

java - 命令 java 在交互式 shell 中有效,但在 shell 脚本中无效

转载 作者:行者123 更新时间:2023-12-02 11:30:18 26 4
gpt4 key购买 nike

我编写了一个非常简单的脚本,仅使用一个命令,该命令在交互式 shell 中运行,但不在脚本中运行。

#!/bin/sh
echo "--- Running game ---"
java -cp lib/java-json.jar:bin:. com.theaigames.game.warlight2.Warlight2 "../example-map.txt" "java -cp bot.BotStarter" "java -cp bot.BotStarter" 2>err.txt 1>out.txt

当我执行脚本后显示 err.txt 的内容时,我得到:

Error: Could not find or load main class com.theaigames.game.warlight2.Warlight2

但是当我在交互式 shell 中使用它时,程序会被执行:

Exception in thread "main" java.lang.NoClassDefFoundError: org/json/JSONException
at com.theaigames.game.warlight2.Warlight2.setupGame(Warlight2.java:91)
at com.theaigames.engine.Engine.start(Engine.java:89)
at com.theaigames.game.warlight2.Warlight2.main(Warlight2.java:293)
Caused by: java.lang.ClassNotFoundException: org.json.JSONException
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 3 more

(java错误不是这里的问题)

最佳答案

这可能是由当前工作目录路径引起的。您可以通过使用 -Duser.dir JVM 参数来确定。

或者,您可以在执行java之前更改路径。

#!/bin/sh
cd <your dir>
java <some arguments>

关于java - 命令 java 在交互式 shell 中有效,但在 shell 脚本中无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49347204/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com