2009-07-27 136 views
8

我有两场战争,foo.war和bar.war。 foo使用栏中的类。 我想启动foo,并添加到Java的classpath bar.war,但是java会抛出一个ClassNotFoundException异常。将WAR添加到Java的类路径

如果我将bar.war重命名为bar.jar,并将其目录结构编辑为jar,它就可以工作。

Java的了〜CP交换机上的文件并没有提及战争的文件:

-classpath <class search path of directories and zip/jar files> 
       A ; separated list of directories, JAR archives, 
       and ZIP archives to search for class files. 
+0

我有一个类似的问题 - 我有几十个罐子和几十个配置文件被扔进一场战争,并希望能够使用它作为我的“Classpath”运行一个groovy脚本,并拥有它只是工作。总有其他选择,但这将是最灵活的方式,可能会为我节省几天的工作时间......噢,接下来的解决方案。无论如何,这个问题+1 - 为我节省了一些时间。 – 2012-08-15 22:46:24

回答

15

WAR文件是指整个Web应用程序,而不是库。他们包含库,但它们本身就是应用程序。

一个Web应用程序不应该依赖于另一个应用程序。他们可能依赖于相同的图书馆,但不依赖于彼此。

基本上提取出常用的功能,使它成为一个库(作为jar文件),并将这个jar文件包含在两个WAR文件中,或者将它添加到类路径的公共部分。

+0

正试图避免我们不断增长的项目列表中的另一个项目。好吧。 – ripper234 2009-07-27 07:40:21

0

战争文件的结构是非常不同的,那么一个罐子所以这是行不通的。 Java类文件保存在WAR的类目录中,而Jar直接具有Java类文件。为什么不添加具有bar.war的Java类文件的文件夹?

你想达到什么目的?