[英]Command java works in interactive shell but not in shell script
我只用一個命令編寫了一個非常簡單的腳本,該命令在交互式外殼程序中工作,但不在腳本中工作。
#!/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
但是,當我在交互式外殼中使用它時,程序將執行:
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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.