帮助在linux上启动java应用程序

帮助在linux上启动java应用程序,java,linux,Java,Linux,我有这样的bash脚本start.sh: export JAVA_HOME=/HOME/qds/bin/jdk1.6.0_22 导出QDS\u HOME=/HOME/QDS $JAVA_HOME/bin/JAVA-classpath$QDS_HOME/lib/*:$QDS_HOME/lib/commons/*com.QDS.Main$@ 在目录/home/qds/lib中,我有必要的库和我的jar文件,其中包含: com\qds\config com\qds\entities com\qds\h

我有这样的bash脚本start.sh:

export JAVA_HOME=/HOME/qds/bin/jdk1.6.0_22
导出QDS\u HOME=/HOME/QDS
$JAVA_HOME/bin/JAVA-classpath$QDS_HOME/lib/*:$QDS_HOME/lib/commons/*com.QDS.Main$@

在目录/home/qds/lib中,我有必要的库和我的jar文件,其中包含:

com\qds\config
com\qds\entities
com\qds\hibernate
com\qds\protocols
com\qds\util
com\qds\Main.class

但当我运行./start.sh时,我有:

/start.sh 线程“main”java.lang.NoClassDefFoundError:com/qds/main中出现异常(错误名称:main)
在java.lang.ClassLoader.defineClass1(本机方法)

中,您必须通过以下几种方式之一指定主类

  • 指定主类名称作为java命令的参数(只需将主类添加到java命令的末尾)
  • 在主jar的清单中定义它

  • Java不支持option-classpath中的通配符。尝试从$QDS_HOME/lib/*和$QDS_HOME/lib/commons/*中删除*

    顺便说一句,这也与windows相关

    类路径应该包含 1.目录 2.显式编写的jar文件

    如果您有许多jar文件,您可以创建组成命令行选项的脚本。 例如在linux上

    -classpath `ls -1|tr '\n' :`
    

    编写以冒号分隔的类路径

    ,但是shell不应该为他扩展通配符。因此,虽然为true,但类路径不能包含通配符,因为shell扩展通配符后,就
    java
    命令而言,它只是一个文件列表,但我刚才看到它有多个条目,由
    分隔,这意味着shell想要扩展任何内容,carryon:)