错误:无法找到或加载主类(另一个)



我已经搜索了整个网站,并在收到此消息时尝试了一些解决方案,但似乎都不起作用。

我试图在Ubuntu 12.04.2(使用java-7-openjdk-amd64)上调用运行java程序的shell脚本,然后我得到一个"错误:无法找到或加载主类com。xx"错误。

这是我的脚本调用Java的方式:

"$JAVA" $server_jvmargs $javaProps -Dxx.home="$XX_HOME" -Duser.dir="$XX_HOME" -cp $client_classpath $mainclass $args

上面的参数定义如下:

args=$*
javaProps=
mainclass=com.xx
server_jvmargs="-Djava.awt.headless=true -Xms1024m -Xmx1024m $jvmargs"
XX_HOME="`pwd`/../.."
client_classpath="$XX_HOME/lib/client/patch.jar;$XX_HOME/lib/client/xyx-xxx.jar;$clientlibs;$XX_HOME/lib/server/standard-1.1.2.jar;$publictilesource;$respath;$XX_HOME/lib/client/xxmainclass.jar"

mainclass变量位于xxmainclass.jar文件中的类路径中,所以我不确定为什么找不到它?

有人知道会发生什么吗?

要查看在运行脚本时实际发生了什么,使用bash -x调用它,或者将set -x放在顶部;这将在运行之前打印每个命令,因此您可以看到实际上是如何启动JVM的。如果没有这些信息,就很难做出更好的诊断。也就是说…


你已经复制了Tomcat的启动脚本,看起来像。不;他们是可怕的。

在shell端更正确的代码应该是这样的:

args=( "$@" )
javaProps=( )
mainclass=com.xx
server_jvmargs=( -Djava.awt.headless=true -Xms1024m -Xmx1024m "${jvmargs[@]}" )
XX_HOME="$PWD/../.."
client_classpath="$XX_HOME/lib/client/patch.jar:$XX_HOME/lib/client/xyx-xxx.jar:$clientlibs:$XX_HOME/lib/server/standard-1.1.2.jar:$publictilesource:$respath:$XX_HOME/lib/client/xxmainclass.jar"
java 
  "${server_jvmargs[@]}" 
  "${javaProps[@]}" 
  -Dxx.home="$XX_HOME" 
  -Duser.dir="$XX_HOME" 
  -cp "$client_classpath" 
  "$mainclass" "${args[@]}"

${foo[@]}的使用用文字内容扩展了数组foo。注意,在本例中,foo必须以数组的形式创建,并且需要使用支持数组的shell(因此脚本需要从#!/bin/bash开始,而不是从#!/bin/sh开始)。

请参阅http://mywiki.wooledge.org/BashFAQ/005获取bash中数组的介绍。

用a:代替a;

unix就是这样滚动的

试试这个:

Java -jar pathToYOurFile.jar

请检查shell脚本中行结束字符是否与操作系统相关

相关内容

最新更新