【问题标题】:Cannot find main class on Linux - Classpath issue在 Linux 上找不到主类 - 类路径问题
【发布时间】:2013-09-10 17:13:11
【问题描述】:

我在 linux 机器上运行几个 jar 时遇到了一些麻烦。基本上,我收到一个错误,说它找不到我的主 jar 的主类。该类是明确存在的,因此它必须是一个类路径问题。 我对 linux 不太了解,所以我正在寻找一些关于我可能遗漏什么的建议。

首先,我在用户 bash_profile 中设置类路径;添加所有需要的罐子,用 : 分隔符分隔。然后我导出类路径。

然后,在我用来调用主 jar 的 shell (ksh) 脚本中,我还存储了类路径并使用 -cp 在命令中调用它

看起来像:

TEST_ROOTDIR = /Test/app
CLASSPATH=$CLASSPATH:${TEST_ROOTDIR}/lib/myjar.jar
...
export CLASSPATH

CMD_STRING="java -Xms200m -Xmx200m -XX:MaxPermSize=200m -verbose -cp $CLASSPATH"
CMD_STRING="$CMD_STRING <main classpath in jar>"

nohup $CMD_STRING > $OUTPUT_FILE

输出文件显示所有 jre jar 正在执行,然后加载该 jar 并为主类抛出类未找到异常。

我很困惑,任何帮助将不胜感激

【问题讨论】:

  • 我宁愿从没有所有花哨的nohup 和变量的东西开始;首先尝试让它在 cmdline 上运行,例如-Xms200m -Xmx200m -XX:MaxPermSize=200m -verbose -cp /Test/app/lib/myjar.jar myjar。一旦成功,将其放入脚本中。
  • 显然 cmdline 应该包含 java-interpreter 本身:java -Xms200m -Xmx200m -XX:MaxPermSize=200m -verbose -cp /Test/app/lib/myjar.jar myclass(和 myclass 是你的 &lt;main classpath in jar&gt; - 你还没有给出)

标签: java linux classpath java-7 .bash-profile


【解决方案1】:

问题出在下面一行:

TEST_ROOTDIR = /Test/app

我确定在执行脚本时,它会发出一条错误消息:

TEST_ROOTDIR: command not found

你似乎忽略了。在设置环境变量时删除= 周围的空格。说:

TEST_ROOTDIR=/Test/app

【讨论】:

  • OP 声明“然后加载 jar”,这似乎表明您的假设不正确; (实际上我试图撤消我的downvote(没有upvoting))
  • 也许 假设 不正确,但事实上说 A = foo 不会设置变量 A
猜你喜欢
  • 2018-05-28
  • 2013-12-17
  • 2016-02-04
  • 2017-09-12
  • 2014-05-29
  • 2013-07-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多