gpt4 book ai didi

java - 从 CLI 运行 Java 工作正常,但从 SH 执行相同的不会让 Java 找到类

转载 作者:太空宇宙 更新时间:2023-11-04 11:03:51 24 4
gpt4 key购买 nike

我正在尝试在 Linux 上运行 Java 服务器,当我从 CLI 运行它时它工作正常。

如果我从正确的文件夹执行以下代码(需要一些文件,所以此时我无法从另一个文件夹执行),则以下代码有效:

java -classpath "/var/server/dist/*" net.world.WorldServer

一旦我在文件夹中使用完全相同的代码创建了一个 SH 文件,我就会使用以下命令执行它:

./launch_server.sh OR bash launch_server.sh

我收到以下错误:

Error: Could not find or load main class net.world.WorldServer

我一直在 Google 上搜索有类似问题的人,但找不到对我有帮助的答案。

以下我试过没有帮助;

  1. 在执行前设置 CLASSPATH(在 SH 文件中)[export CLASSPATH="/var/server/dist/*"]
  2. 将 CLASSPATH 设置为服务器环境变量[export CLASSPATH="/var/server/dist/*"]

我的 Java 版本:

Java(TM) SE Runtime Environment (build 1.8.0_20-b26)
Java HotSpot(TM) 64-Bit Server VM (build 25.20-b23, mixed mode)

CentOS 版本:

CentOS release 6.4 (Final) [64-Bit]

我正在以“root”身份执行这一切,并且我拥有对服务器的完全访问权限。

如果您需要更多信息来解决这个问题,请在评论中告诉我,我会尽快获取信息并编辑问题。

提前致谢! ^_^

最佳答案

当直接在终端上运行时,"/var/server/dist/*" 在将字符串传递给 java 之前被 bash 扩展,所以它结束了是一个有效的类路径(/var/server/dist/some.jar:/var/server/dist/other.jar... 等等)。

要使其在 shell 脚本中运行,您需要构建类路径字符串,例如

classpath=""
for i in `ls /var/server/dist/*jar`
do
classpath=$i:$classpath
done

java -classpath $classpath

关于java - 从 CLI 运行 Java 工作正常,但从 SH 执行相同的不会让 Java 找到类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26034029/

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