2017-01-19 56 views
1

下面是我的Jar结构。这是独立的jar。从批处理文件执行独立JAR

MyApp.jar 
--> .settings 
--> com 
--> lib 
--> META-INF 
--> resources 
--> .classpath 
--> .project 

我正试图从bat文件中执行这个jar文件。

我刚才提到的MANIFEST.MF文件的类路径和主类下的META-INF文件夹从MyApp.jar

Manifest-Version: 1.0 
Class-Path: ./lib/jar1.jar ./lib/jar2.jar ./lib/jar3.jar 
Main-Class: com.bank.Main 

在我的bat文件: Java的罐子d:\程序\ MyApp.jar

是否正确的方式来lib文件夹内的jar文件?

但我仍然面临ClassNotFoundException。

Exception in thread "main" java.lang.NoClassDefFoundError: javax/jms/JMSException

任何我错过了请告诉我。

+0

请加上完整的错误信息。 – Fildor

+0

线程“main”中的异常java.lang.NoClassDefFoundError:javax/jms/JMSException – DEADEND

+0

似乎你缺少一个依赖jar吗? – Fildor

回答

2

将lib文件夹放在当前主jar [MyApp.jar]目录之外并执行它。

您已将jar依赖关系打包到您的主jar文件中。 Class-Path的目的是向类路径添加一个外部jar,路径相对于主jar的位置。

标准Java类加载器不支持在jar中打包jar。不过,如果你愿意,你可以将内部罐子爆炸到主罐子中。 Maven可以为你做这件事。