no se puede ejecutar una aplicación java desde un script de shell

no se puede ejecutar una aplicación java desde un script de shell

Después de descargar y descomprimir el paquete zip, copio el archivo modelsphere.bat a modelsphere.sh y cambio el contenido a:

 java -ms64m -mx512m -ss16m -classpath "./modelsphere.jar:./resources.zip:./resources:./targets:./lib/jakarta-regexp-1.5/jakarta-regexp-1.5.jar:./lib/velocity-1.6.1/velocity-1.6.1.jar:./lib/jazzy-core/jazzy-core.jar:./lib/jython-2.2.1/jython.jar:./lib/velocity-1.6.1/lib/commons-collections-3.2.1.jar:./lib/velocity-1.6.1/lib/commons-lang-2.4.jar:./lib/lablib-checkboxtree-3.0.2.jar" org.modelsphere.sms.Application

pero cuando se ejecuta modelsphere.sh con el comando "./modelsphere.sh", se genera la siguiente excepción:

 Exception in thread "main" java.lang.NoClassDefFoundError: org/modelsphere/sms/Application
Caused by: java.lang.ClassNotFoundException: org.modelsphere.sms.Application
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
.  Program will exit.in class: org.modelsphere.sms.Application

cuando ejecuto el comando,

java -ms64m -mx512m -ss16m -classpath "./modelsphere.jar:./resources.zip:./resources:./targets:./lib/jakarta-regexp-1.5/jakarta-regexp-1.5.jar:./lib/velocity-1.6.1/velocity-1.6.1.jar:./lib/jazzy-core/jazzy-core.jar:./lib/jython-2.2.1/jython.jar:./lib/velocity-1.6.1/lib/commons-collections-3.2.1.jar:./lib/velocity-1.6.1/lib/commons-lang-2.4.jar:./lib/lablib-checkboxtree-3.0.2.jar" org.modelsphere.sms.Application

que es el contenido del archivo "modelsphere.sh", funciona.

¿por qué? ¿Y cómo podría iniciar Open ModelSphere con el archivo shell de "modelsphere.sh"?

¿Alguien podría darme algún punto? gracias de antemano.

Respuesta1

Probablemente tenga finales de línea de DOS (\r\n en lugar de \n). Verhttp://mywiki.wooledge.org/BashFAQ/052

Y como buena práctica, debes asegurarte de que la primera línea del archivo diga#!/bin/sh

información relacionada