Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用分解的jar依赖关系?_Java_Spring_Maven_Tomcat - Fatal编程技术网

Java 如何使用分解的jar依赖关系?

Java 如何使用分解的jar依赖关系?,java,spring,maven,tomcat,Java,Spring,Maven,Tomcat,我制作了一个SpringWeb应用程序。它与lib文件夹中的jar一起工作,但我需要将其中一些解压缩。我知道拆包不是最好的方式,但我需要拆包 这些罐子是我自己做的。我需要能够访问特定于模块的属性文件。在您提问之前,我已经考虑过将它们放在外部并移动到war文件夹中,但由于某些功能,这两种方法在本例中都不可用。我在用一个制作糟糕的老程序。所以我的选择是有限的 我正试图使我的一些依赖性爆炸。我已成功地使用以下方法爆炸了一个jar并将其放入部署的war中的“WEB-INF\classes\”: <

我制作了一个SpringWeb应用程序。它与lib文件夹中的jar一起工作,但我需要将其中一些解压缩。我知道拆包不是最好的方式,但我需要拆包


这些罐子是我自己做的。我需要能够访问特定于模块的属性文件。在您提问之前,我已经考虑过将它们放在外部并移动到war文件夹中,但由于某些功能,这两种方法在本例中都不可用。我在用一个制作糟糕的老程序。所以我的选择是有限的

我正试图使我的一些依赖性爆炸。我已成功地使用以下方法爆炸了一个jar并将其放入部署的war中的“WEB-INF\classes\”:

<plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-dependency-plugin</artifactId>
          <version>2.8</version>
          <executions>
            <execution>
              <id>unpack</id>
              <phase>process-resources</phase>
              <goals>
                <goal>unpack</goal>
              </goals>
              <configuration>
                <artifactItems>
                  <artifactItem>
                    <groupId>${project.groupId}</groupId>
                    <artifactId>module1</artifactId>
                    <version>${project.version}</version>
                    <type>jar</type>
                    <outputDirectory>${project.build.outputDirectory}/module1</outputDirectory>
                    <overWrite>false</overWrite>
                  </artifactItem>
                  <artifactItem>
                    <groupId>${project.groupId}</groupId>
                    <artifactId>module2</artifactId>
                    <version>${project.version}</version>
                    <type>jar</type>
                    <outputDirectory>${project.build.outputDirectory}/module2</outputDirectory>
                    <overWrite>false</overWrite>
                  </artifactItem>
                </artifactItems>
                <overWriteReleases>false</overWriteReleases>
              </configuration>
            </execution>
          </executions>
        </plugin>

org.apache.maven.plugins

但是,它似乎无法识别分解的文件夹。我忘了什么?他们必须在别的地方吗?或者我需要把一些新文件夹的参考

提前谢谢


编辑:我已要求主持人删除此主题。因为我已经用上面的主题解决了它。因为这个问题还没有答案。

不要提取jar文件的内容。没有必要那样做。它们被打包成jar文件是有原因的。将jar文件放在WEB-INF目录下的lib目录中。Tomcat将自己发现它们的内容

MyWebApp
    |
    |_ WEB-INF
         |
         |_ lib
              |
              |_ commons_1.0.jar
              |_ email_1.3.jar

你为什么要炸掉罐子?重点是什么?另外,您是否意识到WEB-INF/classes下的目录结构必须与类加载器能够加载类的包结构相匹配?我需要将它们解包,以便能够访问某些我不能放在其他任何地方的文件。我通常把所有东西都藏在我的lib文件夹的罐子里,但这次我需要把它们打开。那么我该如何使用未打包的JAR呢?另外,当你说提供了作用域时,你是说可以在部署的环境中找到依赖项(app server提供了它),因此你不会在部署中包含依赖项(例如war或ear)--因此,如果提供了依赖项,则不需要将其作为分解的jar或常规jar包含。WEB-INF/lib jar中的任何内容都可以使用类加载器(ClassLoader.getResource[AsStream])访问,访问方式与WEB-INF/classes中的完全相同。没有必要解包。我需要手动编辑文件的内容。在代码中访问它们不是问题。程序正在使用打包的jar。我只需要将它们解包(并继续工作)。我知道,应用程序是用jar文件运行的。但是我需要一些解包。你所指的jar文件,是你自己创建的,还是其他人创建的?您需要访问的jar文件中有什么?你不能先创建一个import语句,然后创建必要类的实例来引用代码中需要的内容吗?我自己创建了JAR。我需要能够访问特定于模块的属性文件。在您提问之前,我已经考虑过将它们放在外部并移动到war文件夹中,但这两种方法在本例中都不可用。我在用一个制作糟糕的老程序。所以我的选择是有限的。所以我需要我的jar被分解,这样我才能访问属性文件。在这个模块中有一些bean和类需要由spring的组件扫描器提取。