2012-01-06 62 views
0

我有一个巨大的项目(应用程序)与其中的另一个项目(核心)。应用程序与Core一样有一大套库。我使用的是Eclipse,因此我使用Export Runnable Jar选项来创建Application.jar,但是当我运行它时,代码的一部分使用了对其中的图像库具有依赖性的Core。当我查看可运行jar文件时,Application项目的所有库都存在,但是当我查看Core项目jar文件时,库不在那里。为了让你知道我期待的结构,我期待如下所示:如何构建一个具有内部jar文件的内部jar文件的可运行jar?

Application 
    - Core.jar 
    + ImageLibrary.jar 
    + OtherLibraries.jar 
    : 
    + OtherLibraries.jar 
    : 

我正在使用Maven单独构建项目。但是我并不是Maven的专家,因为我只用了很短的时间。

是否有可能建立应用程序,以便Core也有它的库?

在此先感谢, 阿列克谢蓝。

+0

http://stackoverflow.com/questions/5000351/adding-jar-libraries-into-jar-file和其他几个问题的副本 – milan 2012-01-06 10:33:29

+0

检查可执行jar内的Manifest,这应该包括正在使用的classpath,核心内的罐子不包括在内,因此它们被忽略。 – 2012-01-06 10:35:38

+0

我检查了清单文件,但Core不在其中(希望我说得对,只有一个清单文件)。然而,Core被声明为依赖于我的pom.xml,所以Maven应该选择它。它可以访问Core内的类,这是在Core调用图像库中的类时抛出ClassNotFoundException的时候。 – 2012-01-06 10:52:25

回答

0

好吧,所以我最终想出了这一个。当我使用Maven构建项目时,它正在这样做,然后不更新eclipse中的构建路径。所以,我在核心目录,我跑:

# mvn clean install 
# mvn eclipse:eclipse 

由于图像库是一个除了核心的依赖关系,我不得不确保Eclipse的构建路径设置,否则Eclipse将不会拿起变化。 eclipse:eclipse命令为我做了这个,但我认为它只适用于一个模块的项目,但它会读取您的pom文件中的任何依赖项,并确保您的项目可以看到并访问它们。

然后在应用程序目录我重新建项目:

# mvn clean install 

然后从Eclipse中我导出应用项目作为其工作正常运行的JAR。

希望这可以帮助任何人有同样的问题。

干杯, Alexei Blue。

0

在您的Maven构建应用程序中,Core是否未指定为依赖项?如果是这样,它应该包含在它的所有依赖中。您应该检查依赖项本身是否包含Maven中的正确范围。

+0

是的,依赖是在我的pom.xml文件中Maven应该选择的。但是由于某种原因它没有出现在清单中。 – 2012-01-06 10:45:16

+0

不在清单中,或者不在整个广告瓶/战争/耳朵本身中? – TrueDub 2012-01-06 13:57:29

+0

Core不会出现在清单中,但Jar文件出现在可运行的Jar – 2012-01-06 14:53:52

相关问题