2017-08-03 51 views
0

我面对一个可能很重要的问题,但我相信这是最容易使用的社会各界的帮助:正确的方式使用lib文件夹的JAR

我在我的罐子以下项目:

下面MANIFEST.MF的
com (output of my compiled code) 
lib/a.jar 
    b.jar 
    ... (about 30 more) 
META-INF/MANIFEST.MF 

内容:

Manifest-Version: 1.0 
Class-Path: lib/* 
Main-Class: com.irrelevant.MyMainclass 

我不断收到java.lang.NoClassDefFoundError -s。

显然,缺少的类是lib文件夹中的一个jar文件的一部分。

值得指出的是,在我提取引用的jar包的内容之前,我一直在正确执行这个jar。所以一切正常。我只想使用罐子而不是提取其内容。

我们的目标是通过简单地调用,以便能够运行应用程序:

Java的罐子myjar.jar

同样,我能执行此当我使用的提取的内容引用罐子。

The platform in Windows. 
Java version is Java 8. 

有没有简单的方法来实现这一目标?

由于提前, 彼得

回答

0

您可以使用maven shade plugin创建uber-jar这将对所有的依赖类。

Here就是这样做的例子。

如果你想尝试自己的解决方案,那么你能否请尝试在清单文件的Class-Path中添加明确的jar名称。

+0

不幸的是,在我的清单文件的Class-Path中添加显式jar名称正是我想要避免的。 –

+0

我不想用maven来解决这个问题。我可能天真,但必须有一个简单的方法来实现这一点。 –

+0

@PeterJaloveczki,即使我们使用带有jar的命令行类路径,我们也必须指定路径。因此看起来像你必须明确指定jar路径。 –

相关问题