2013-02-21 282 views
0

我有一个可执行的jar文件,我想从Ubuntu Linux上的* .sh脚本开始。如何从.sh脚本启动可执行文件jar?

目前myapp.sh文件看起来像这样(错误: “什么也没发生”):

java -jar myapp.jar --start 

我也试过(错误:“/ bin/sh的:0:无法打开Java的”):

/bin/sh java -jar myapp.jar --start 

和(错误: “/ bin/sh的:0:无法打开Java的罐子myapp.jar --start”):

/bin/sh "java -jar myapp.jar --start" 

myapp.sh文件具有rwx权限......当我调用./myapp.jar时什么也没有发生。

有人有解决这个问题吗?

非常感谢提前。

编辑1:这里是我的MANIFEST.MF:

Manifest-Version: 1.0 
Ant-Version: Apache Ant 1.8.3 
Created-By: 1.6.0_38-b05 (Sun Microsystems Inc.) 
Class-Path: lib/gf-client.jar lib/security.jar lib/eclipselink-2.3.2.j 
ar lib/javax.persistence-2.0.3.jar lib/org.eclipse.persistence.jpa.jp 
ql_1.0.1.jar lib/org.eclipse.persistence.jpa.modelgen.processor-2.3.2 
.jar lib/javaee-api-6.0.jar lib/LawSuiteFXW.jar lib/AbsoluteLayout.ja 
r lib/beansbinding-1.2.1.jar lib/antlr-2.7.7.jar lib/antlr-runtime-3. 
3.jar lib/bootstrapconnector.jar lib/commons-codec-1.5.jar lib/common 
s-collections-3.2.1.jar lib/commons-compress-1.3.jar lib/commons-dige 
ster-1.7.jar lib/commons-email-1.2.jar lib/commons-io-2.4.jar lib/com 
mons-lang-2.4.jar lib/commons-lang3-3.1.jar lib/commons-logging-1.1.1 
.jar lib/commons-vfs2-2.0.jar lib/glazedlists_java15-1.9-20111127.203 
634-11.jar lib/icepdf-core.jar lib/icepdf-viewer.jar lib/jasypt-1.9.0 
.jar lib/jcommon-1.0.17.jar lib/jfreechart-1.0.14.jar lib/jhall.jar l 
ib/jms.jar lib/joda-time-2.1.jar lib/junit-3.8.1.jar lib/log4j-1.2.15 
.jar lib/migcalendarbean.jar lib/PDFRenderer-0.9.1.jar lib/xmlsec-2.0 
.jar lib/avalon-framework-api-4.3.1.jar lib/avalon-framework-impl-4.3 
.1.jar lib/docx4j-2.8.1.jar lib/fop-1.0.jar lib/itext-2.1.7.jar lib/j 
axb-svg11-1.0.2.jar lib/jaxb-xmldsig-core-1.0.0.jar lib/jaxb-xslfo-1. 
0.1.jar lib/poi-3.8.jar lib/poi-scratchpad-3.8.jar lib/serializer-2.7 
.1.jar lib/stringtemplate-3.2.1.jar lib/wmf2svg-0.9.0.jar lib/xalan-2 
.7.1.jar lib/xhtmlrenderer-1.0.0.jar lib/xml-apis-1.3.04.jar lib/xmlg 
raphics-commons-1.4.jar lib/poi-ooxml-3.8-20120326.jar lib/poi-ooxml- 
schemas-3.8-20120326.jar lib/batik-1.1.1.jar lib/ftp4j-1.7.2.jar lib/ 
AppleJavaExtensions-1.4.jar lib/swingx-all-1.6.4.jar lib/swingx-beani 
nfo-1.6.4.jar lib/pdfbox-1.7.1.jar lib/fontbox-1.7.1.jar lib/jempbox- 
1.7.1.jar lib/jai_codec.jar lib/jai_core.jar lib/java-mail-1.4.6.jar 
lib/LawSuiteSE.jar 
X-COMMENT: Main-Class will be added automatically by build 
Main-Class: ch.acme.core.Main 

编辑2:

我用下面的代码来开始我的GUI应用程序:

public static void main(String[] args) { 
    EventQueue.invokeLater(new Runnable() { 
     @Override 
     public void run() { 
      Main m = new Main(); 
      m.setVisible(true); 
     } 
    }); 
} 

删除此以下,解决了这个问题。有任何想法吗 ???

public static void main(String[] args) { 
    Main m = new Main(); 
    m.setVisible(true); 
} 
+4

您是否在'MANIFEST.MF'中定义了您的'Main-Class'? – Reimeus 2013-02-21 19:28:23

+1

你还没有说过你显示什么错了... – 2013-02-21 19:28:30

+0

请确保输入java -version – Aubin 2013-02-21 19:29:57

回答

0

我用下面的代码来开始我的GUI应用:

EventQueue.invokeLater(new Runnable() { 
    @Override 
    public void run() { 
     Main m = new Main(); 
     m.setVisible(true); 
    } 
}); 

删除这个,解决了这个问题。有任何想法吗 ?

0

尝试使用完整路径运行java。

运行“哪个java”来计算完整路径。

1

有些东西,你可以添加,以帮助我们来帮助你

  • 显示我们的jar(舱单)
  • 你如何建立你的可执行的JAR(Maven的?)

内容要能够从您需要的可执行文件Jar中启动应用程序:

定义清单内的Main-class 定义清单内的类路径并包含罐子里面的所有依赖 或 -cp与路径添加到Java调用你的依赖的类路径

编辑:从我了解java命令正常工作的意见确定...所以你的概率与SH

添加到您的SH

!/ bin中/ KSH

的顶部,并通过键入./scriptname启动它。KSH

(由SH取代ksh的,如果你是绝对需要在SH运行)

编辑2: 样品一KSH我用的:

#!/bin/ksh 

JAVA_HOME16=/usr/java16/bin 

${JAVA_HOME16}/java -Drunningenv=dev -Dbatch.jdbc.user=${DB2_CODE_USAGER}  -Dbatch.jdbc.password=${DB2_MOT_PASSE} -jar ${BASEDIR}/BD_PVFI/bin/spring-batch- conciliation-1.0.0-SNAPSHOT.jar input.desj.file=${INPUTFILE_DESJ} 
rc=$? 
+0

感谢您的回答。 #!/ bin/ksh或!/ bin/ksh?我需要sh,默认情况下,我的Ubuntu上没有安装ksh。 – salocinx 2013-02-21 19:49:12

+0

#!/ bin/sh然后。这应该做;-) – Cygnusx1 2013-02-21 20:02:44

相关问题