我已经搜索了整个网站,并在收到此消息时尝试了一些解决方案,但似乎都不起作用。
我试图在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脚本中行结束字符是否与操作系统相关